2010-02-11 6 views
6

प्रश्न संस्करण के लिए दिनांक समय LastUpdated स्तंभ पर Html.hidden का उपयोग कर खो दिया हो? लंबे संस्करण मेंMVC.NET मिलीसेकेंड जब संक्षेप में ट्रैकिंग

प्रश्न:

इम ट्रैकिंग (अपने आप में यह एक समाधान के रूप में प्रस्तावित किया गया है एक editview द्वारा passedback रहने के बाद एक Linq2Sql डेटा वर्ग फिर से संलग्न करने के लिए संस्करण के लिए एक एसक्यूएल तालिका में दिनांक समय स्तंभ का उपयोग करने की कोशिश कर तालिका के लिए)

लेकिन अब मुझे 'पंक्ति नहीं मिली या बदली'-अपवाद मिला।

ctx.appointments.Attach(appointment,true); 
ctx.SubmitChanges(); 

जहां ctx मेरी Linq DataContext, अपॉइंटमेंट्स मेरी मेज, और नियुक्ति नियुक्ति वस्तु मैं के रूप में sugested here

यह समस्या था संलग्न करने के लिए .. Ive सेटअप नियुक्तियों तालिका कोशिश है: ctx.submit पर सुझाए गए समाधान के एक पाठक द्वारा भी नोट किया गया। उन्होंने एक समाधान के रूप में this का सुझाव दिया।

समस्या यहां वेबफॉर्म का उपयोग नहीं कर रहा है, मैं एमवीसी.NET का उपयोग कर रहा हूं। तो मैं

  <%= Html.Hidden("LastUpdate", Model.LastUpdate) %>     

का उपयोग कर अनुमान लगा रहा है LastUpdate संपत्ति परिवर्तन करता है। तो क्या यह सुनिश्चित करने का कोई तरीका है कि मुझे वही (या कम से कम बराबर) डेटटाइम ऑब्जेक्ट मिलता है जब यह मेरी अद्यतन कार्रवाई में वापस हो जाता है?

मैं अपनी नियुक्ति तालिका के अद्यतन पर सुझाए गए गेटटाइम() ट्रिगर का उपयोग कर रहा हूं। यह स्पष्ट रूप से एक एसक्यूएल डेटाटाइम ऑब्जेक्ट स्टोर करता है। जो कि Linq2SQL द्वारा सटीक रूप से पार्स नहीं किया जा सकता है। मुझे लगता है कि यह भी समस्या में जोड़ता है।

मुझे उम्मीद है कि इसके लिए एक समाधान है। मैं सिर्फ टाइमस्टैम्प प्रारूप का उपयोग कर यह भी हल होगा पता .. लेकिन यह है कि इस सवाल का के दायरे से बाहर है

उत्तर

3

मुझे लगता है कि समस्या यह है कि बाहर ऐसे ही एक छिपी हुई फ़ील्ड में अंतिम अद्यतन समय लिख बस पर एक ToString करना होगा है दिनांक जो डिफ़ॉल्ट रूप से मिलीसेकंड प्रस्तुत नहीं करेगा। टिक्स जैसे आप कुछ निरपेक्ष मूल्य के रूप में टाइमस्टैम्प बाहर प्रतिपादन की कोशिश कर सकते:

<%= Html.Hidden("LastUpdate", Model.LastUpdate.Ticks) %> 

फिर आपको वापस एक लंबे & में मूल्य परिवर्तित दिनांक समय के पुनर्निर्माण द्वारा दूसरे पक्ष पर अपनी datetime को फिर से संगठित कर सकते हैं:

var dt = new DateTime(Int64.Parse(ticks)); 
+0

जो हाँ काम करेगा, धन्यवाद :) – ArjanW

4

आप मुझे belive नहीं होगा, लेकिन इस प्रयास करें: अपने नियंत्रक पर वापसी से पहले, अनंत विश्वास डे पर एक

ModelState.Remove("LastUpdate"); 
return View(model); 

कारण, किसी ने ऐसा एचटीएमएल की सहायता करें। संशोधित संशोधनों को छोड़कर मूल्यों को "पोस्ट" रखेगा। यहां तक ​​कि उसी पृष्ठ पर सी # पर बनाया गया था।

मॉडलस्टेट से इसे हटाने का यह आसान तरीका है, इसलिए यह पोस्ट के बजाय नए मान को पकड़ता है।

कुछ लोग डिफ़ॉल्ट व्यवहार का अधिकार कहते हैं, लेकिन कृपया, मैं एक एकीकृत कंपनी खोज (कंपनी/उत्पादों) के साथ हाथ से बने ग्रिड के साथ काम कर रहा था, और उत्पादों की कुंजी (एक लंबा) । उसी पृष्ठ पर पोस्ट की गई कंपनी को बदलना।

<%= Html.Hidden("detalleProductos[" + i + "].PRO_PRODUCTOEMPRESAID", item.PRO_PRODUCTOEMPRESAID)%> 
<%= Html.Hidden("detalleProductos[" + i + "].DET_DETALLEENCUESTAID", item.DET_DETALLEENCUESTAID)%> 

मैं क्यों यह गलत कंपनी (पहले मैं भरी हुई) अद्यतन पता लगाने की कोशिश तो कई घंटे बिताए। क्योंकि इसे पहले व्यक्ति को याद किया गया था और उसी पृष्ठ पर सी # पर किए गए संशोधन को त्याग दिया था। पकड़ना मुश्किल है।

अंत में मैं यह करने के लिए किया था:

foreach (var s in ModelState.Keys.ToList()) 
       if (s.StartsWith("detalleProductos")) 
        ModelState.Remove(s); 

मैं बहुत निराश मैं अपने तरीके को पद का फैसला किया था ...

गुड लक!

0

आपको डेटटाइम का उपयोग करने की आवश्यकता है। मिलीसेकंड प्राप्त करने के लिए संपत्ति को पसंद करें।

यदि आप व्यूमोडेल का उपयोग कर रहे हैं तो आप डेटटाइम टिकों को संग्रहीत करने वाली संपत्ति को परिभाषित कर सकते हैं। उदाहरण के लिए:

public long LastUpdateTick { get; set; } 

जब आप अपने मॉडल के लिए अपने इकाई नक्शा और वापस आप दिनांक समय के बीच रूपांतरण करते हैं और मानचित्रण कोड में टिक्स कर सकते हैं।

आपका दृश्य तब LastUpdateTick प्रॉपर्टी से जुड़ सकता है। यदि आप चाहें तो यह बाध्यकारी के लिए अभी भी लैम्ब्डा एक्सप्रेशन का उपयोग करने की अनुमति देगा।

3

यदि आप टिक्स का उपयोग नहीं करना चाहते हैं, तो टेक्स्टबॉक्स फोरम काम करेगा यदि आप दिनांक प्रारूप और एचटीएमएल छुपा विशेषता निर्दिष्ट करते हैं।

@Html.TextBoxFor(model => model.CreatedDate, "{0:dd/MM/yyyy HH:mm:ss.fff}", htmlAttributes: new { @type = "hidden" }) 
संबंधित मुद्दे