当我转到cshtml页面时,会发生此错误:
类型' System.ArgumentException'的例外情况发生在System.Web.Mvc.dll中但未在用户代码中处理
在我的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();
}
答案 0 :(得分:3)
我尝试过这种情况并且非常奇怪,但使用@ 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
所以,可能的解决方案是:
答案 1 :(得分:2)
抛出异常的原因是HtmlHelpers
检查ViewData
以获取要绑定的值。 ViewData
类型为ViewDataDictionary,其中包含属性Model
(您传递给视图的模型)。
在您的情况下,您不会将模型返回到视图,因此ViewData.Model
为null
并抛出异常。
要解决此问题,请使用强类型EditorFor(m => m.Model)
(或TextBoxFor(m => m.Model)
,无论如何都应该这样做。即使您没有将模型传递给视图,这仍然会生成正确的没有抛出异常的HTML。
<input type="text" name="Model" id="Model" value="" />
但无论如何都是传递模型的最佳做法,所以你的控制器方法应该是
public ActionResult Create()
{
return View(new PropertyAssign());
}
答案 2 :(得分:0)
使用您的模型名称在顶部写
@using projectNamespace.PropertyAssign
当您使用某个属性的编辑器时,您可以像
一样编写@Html.EditorFor(m => m.PropertyName)
用于文本框
@Html.TextBoxFor(model => Model.PropertyAssign , new { @class = "release-prefix" @id = "prefix" })