سؤال

وأنا باستخدام بيانات درجة الحرارة على النحو التالي في وحدات تحكم بلدي - بسيطة جدا، عندما يكون هناك مشكلة:

TempData("StatusMessage") = "You have no items set to Auto-Ship."

وبعد ذلك في كل صفحة لدي عنصر تحكم المستخدم كما يلي:

<div class="error-container">
<%  If TempData.ContainsKey("ErrorMessage") Then%>
<script> $('div.error-container').show();</script>
<div class="msg-error"><p><%=TempData("ErrorMessage") %></p></div>
<% End If%>
<%  If TempData.ContainsKey("StatusMessage") Then%>
<script> $('div.error-container').show();</script>
<div class="msg-status"><p><%=TempData("StatusMessage")%></p></div>
<% End If%>
<ul></ul>
</div>

والمشكلة هي عندما لدي بإضافة خطأ لtempdata كان يظهر بشكل صحيح على الطلب الأول ولكن أيضا يظهر مرة أخرى على الطلب التالي أيضا - التي من الواضح مربكة جدا وليس السلوك المطلوب

وأنا لا تستخدم أي اللجنة الاولمبية الدولية، أرى هذا المنصب مع نفس المشاكل عند استخدام ذلك.

هل كانت مفيدة؟

المحلول

و <م> غرض وحيد من TempData هو أن تستمر حتى الطلب التالي. الاشياء التي لا تريد أن تستمر حتى يجب أن تذهب الطلب التالي إلى ViewData، بدلا من ذلك.

واقعيا، وهذا يعني أن TempData آمنة فقط لاستخدامها عند إعادة توجيه. عندما لا تكون إعادة توجيه، و "الطلب التالي" يمكن أن يكون أي شيء.

نصائح أخرى

وهذا من شأنه أن يكون مقبولا (إزالة الخطأ مرة واحدة وقد تبين ذلك):

<%  If TempData.ContainsKey("ErrorMessage") Then %>
<script> $('div.error-container').show();</script>
<div class="msg-error"><p><%=TempData("ErrorMessage") %></p></div>
<% 
    TempData.Remove("ErrorMessage")
End If
%>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top