[英]Value cannot be null or empty.\r\nParameter name: name
當我去cshtml頁面時出現這個錯誤:
System.Web.Mvc.dll中出現“System.ArgumentException”類型的異常,但未在用戶代碼中處理
在我的cshtml代碼中:
<div class="form-group">
@Html.Label("Model", new { @class = "control-label col-md-4" })
<div class="col-md-8">
@Html.Editor("Model")
</div>
</div>
但另一方面,如果我在@Html.Editor("PropertyModel")
更改我的代碼
它完美地工作沒有錯誤發生。
在我的模型中:
public class PropertyAssign {
public int PropertyAssignId { get; set; }
public string PropertyName { get; set; }
public string Model { get; set; }
public DateTime AssignDate { get; set; }
}
在我的控制器中:
public ActionResult Create()
{
return View();
}
我嘗試過這種情況,這很奇怪,但是使用@ Html.Editor()幫助器時,Model屬性的標識符存在一些問題。
@Html.Editor("Model") // throws an exception
@Html.EditorFor(m => m.Model) // works fine
也許在這種情況下,Model的含義是整個模型,它被傳遞給視圖,而不是單個屬性。 但是當我將Model屬性的標識符更改為其他屬性時,例如SomeModel,一切都很好。
@Html.Editor("SomeModel") // works fine
@Html.EditorFor(m => m.SomeModel) // works fine
因此,可能的解決方案是:
拋出異常的原因是HtmlHelpers
檢查ViewData
以獲取要綁定的值。 ViewData
是ViewDataDictionary的類型 ,它包含一個屬性Model
(它是傳遞給視圖的模型)。
在您的情況下,您不會將模型返回到視圖,因此ViewData.Model
為null
並拋出異常。
要解決這個問題,請使用強類型的EditorFor(m => m.Model)
(或TextBoxFor(m => m.Model)
, TextBoxFor(m => m.Model)
你都應該這樣做。即使你沒有將模型傳遞給視圖,這個仍然會生成正確的HTML而不會拋出異常。
<input type="text" name="Model" id="Model" value="" />
但無論如何都是傳遞模型的最佳實踐,所以你的控制器方法應該是
public ActionResult Create()
{
return View(new PropertyAssign());
}
使用您的模型名稱在頂部寫
@using projectNamespace.PropertyAssign
當您使用編輯器為您的某些屬性時,您可以像寫一樣
@Html.EditorFor(m => m.PropertyName)
對於文本框它
@Html.TextBoxFor(model => Model.PropertyAssign , new { @class = "release-prefix" @id = "prefix" })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.