@Html.HiddenFor(model => model.title, new { id= "natureOfVisitField", @value = '@Model.title'})
它沒有工作!如何設置值?HTML.HiddenFor值集
@Html.HiddenFor(model => model.title, new { id= "natureOfVisitField", @value = '@Model.title'})
它沒有工作!如何設置值?HTML.HiddenFor值集
您不應該需要在attributes參數中設置值。 MVC應該自動爲你綁定它。
@Html.HiddenFor(model => model.title, new { id= "natureOfVisitField" })
Necroing這個問題因爲我最近在嘗試將相關屬性添加到現有實體時自己遇到了問題。我剛剛結束了做一個很好的擴展方法:
public static MvcHtmlString HiddenFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, TProperty value)
{
string expressionText = ExpressionHelper.GetExpressionText(expression);
string propertyName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(expressionText);
return htmlHelper.Hidden(propertyName, value);
}
使用像這樣:
@Html.HiddenFor(m => m.RELATED_ID, Related.Id)
注意,這也有類似的簽名內置HiddenFor,但使用通用的類型,所以如果價值是System.Object類型的,你實際上會調用內置到框架中的。不知道爲什麼你會在你的意見,雖然可以編輯System.Object類型的屬性...
奇怪,但是,嘗試用@Value,大寫字母「V」
例如(上MVC4工作)
@Html.HiddenFor(m => m.Id, new { @Value = Model.Id })
更新:
研究發現,@Value(資本V)與「價值」創造另一個屬性與「值」一起,用小@value似乎是工作呢!
需要檢查MVC源代碼才能找到更多。
更新,經歷後,如何在內部工作:
首先忘掉所有這些解決方法(我一直在這裏延續的緣故),現在看起來傻:)
基本上,它發生在模型發佈並且模型返回到同一頁面時。
的值被訪問(並形成爲HTML)中使用InputHelper方法(InputExtensions.cs)下面的代碼片斷
string attemptedValue = (string)htmlHelper.GetModelStateValue(fullName, typeof(string));
的GetModelStateValue方法(在Htmlelper.cs)獲取的值作爲
ViewData.ModelState.TryGetValue(key, out modelState)
這是問題,因爲該值是從ViewData.ModelState字典訪問的。 這將返回從頁面發佈的值而不是修改後的值!
ie如果變量(例如Person.Id)的發佈值爲0,但是您在httpPost操作(例如Person.Id = 2)中設置值,則ModelState仍保留舊值「0」和企圖值包含「0」!所以渲染頁面中的字段將包含「0」作爲值!
解決方法如果要將模型返回到同一頁面:從ModelState清除項目, ModelState.Remove(「Id」);
這將刪除從字典和項目 ViewData.ModelState.TryGetValue(鍵,出來的ModelState) 返回null,以及下一條語句(內InputExtensions.cs)主罰實際值(valueParameter)傳遞給 HiddenFor(M => m.Id)
這是在下面的行中進行InputExtensions.cs
tagBuilder.MergeAttribute("value", attemptedValue ?? ((useViewData) ? htmlHelper.EvalString(fullName, format) : valueParameter), isExplicitValue);
總結: 使用ModelState.Remove(「...」)清除ModelState中的項目;
希望這是有幫助的。
它沒有工作! – arnoldrob
沒關係但我犯了一個大錯誤!抱歉!謝謝 – arnoldrob
這在MVC4中不起作用。 –