2010-08-17 2 views
4

Я использую HiddenFor с привязкой к модели, которая является обязательным для него значением. Я хочу сбросить привязанное значение к нулю. Как я могу это сделать?Как установить значение по умолчанию для HiddenFieldFor In Asp.Net MVC

я попытался это, но он не работает ...

<% foreach (var item in Model) { %> 
<%: Html.HiddenFor(model => model.ID,new { @value="0"})%> 
<% } %> 

ответ

10

Вы можете создать свое собственное расширение помощника для этого:

public static MvcHtmlString HiddenFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, object value, object htmlAttributes) 
{ 
    var propertyName = ExpressionHelper.GetExpressionText(expression); 

    var input = new TagBuilder("input"); 
    input.MergeAttribute("id", helper.AttributeEncode(helper.ViewData.TemplateInfo.GetFullHtmlFieldId(propertyName))); 
    input.MergeAttribute("name", helper.AttributeEncode(helper.ViewData.TemplateInfo.GetFullHtmlFieldName(propertyName))); 
    input.MergeAttribute("value", value.ToString()); 
    input.MergeAttribute("type", "hidden"); 
    input.MergeAttributes(new RouteValueDictionary(htmlAttributes)); 

    return MvcHtmlString.Create(input.ToString()); 
} 
2

Просто установите ID свойство модели в действии контроллера для 0.

+0

K понял .Но мне нужно сделать обработку на свойствах идентификатора моей модели означает, что я использую его на другом поле также. – coolguy97

+0

В этом случае я боюсь, что вам придется генерировать HTML вручную без использования помощника 'HiddenFor'. Также зачем вам нужно скрытое поле, значение которого всегда равно '0'? У вас есть другой код javascript, который позже изменит значение? –

+1

yes У меня есть код javascript, который изменит значение скрытого поля на флажке. – coolguy97

Смежные вопросы