#asp.net-mvc-2
#asp.net-mvc-2
Вопрос:
Я пытаюсь сгенерировать скрытый список, поэтому я использую скрытые поля с тем же именем, однако Html.Hidden выводит существующее значение вместо нового. Итак, этот код…
<%
for (int i = 0; i < Model.ProductIds.Count; i )
{ %>
<%: Html.Hidden("ProductIds", Model.ProductIds[i], new { id=""})%>
<br />
Iteration:<%:i %>
Guid:<%:Model.ProductIds[i]%>
<br />
<% } %>
генерирует этот HTML
<input name="ProductIds" type="hidden" value="48906f4c-1719-43ab-9d7e-c336a71b8624">
<br>
Iteration:0
Guid:48906f4c-1719-43ab-9d7e-c336a71b8624
<br>
<input name="ProductIds" type="hidden" value="48906f4c-1719-43ab-9d7e-c336a71b8624">
<br>
Iteration:1
Guid:b4f01496-dddf-41f2-a05b-43392d779a44
<br>
Обратите внимание, что, хотя идентификаторы разные, сгенерированные скрытые поля имеют одинаковое значение. Почему это происходит, и есть ли какой-либо способ обойти это?
Ответ №1:
Я не уверен, почему это происходит, но простой обходной путь — просто создать html самостоятельно:
<%
for (int i = 0; i < Model.ProductIds.Count; i )
{ %>
<input name="ProductIds" type="hidden" value="<%:Model.ProductIds[i]%>">
<br />
Iteration:<%:i %>
Guid:<%:Model.ProductIds[i]%>
<br />
<% } %>
Комментарии:
1. Другое решение, которое я нашел, — <%: Html . Hidden(«productIds», null, new { id=»», Value=Model. productIds[i]})%>
Ответ №2:
Какова цель скрытого списка или нескольких скрытых полей с тем же именем? Не могли бы вы сделать это одним скрытым полем со всеми значениями?
Комментарии:
1. Никогда не доверяйте скрытым полям, чтобы они были действительными, хитрые люди будут возиться с ними, чтобы сломать ваш сайт
2. 1) Цель, если у него есть список, чтобы при его публикации он был правильно сопоставлен со списком <Guid>, который я могу использовать в своем действии. 2) Я могу сделать это одним полем со всеми значениями, но мне не нравится усложнять ситуацию, когда должен быть возможен более простой способ. 3) Вы понимаете, что задали 2 вопроса в качестве ответа? : D