带有int模型的MVC部分视图引发异常
本文关键字:视图 异常 int 模型 MVC 带有 | 更新日期: 2023-09-27 18:28:23
我创建了一个局部视图,允许使用jQuery微调器插件更新int。这显示在qtip工具提示中。
@model int
...
@Html.TextBoxFor(x => x, new { @class = "spinner" })
控制器动作:
[HttpGet]
public PartialViewResult TaskPriority(int id)
{
var task = Task.Get(id);
return PartialView("TaskPriority", task.Priority);
}
当我从我的页面调用操作时,我得到:
值不能为null或为空。参数名称:名称
在TextBoxFor行上引发异常。
那么,我在这里做错了什么,为什么会错呢?我是不是太复杂了?
View引擎尝试检索文本框的名称。通常,它是根据用作文本框源的属性的名称构造的。注意MSDN上描述的TextBoxFor
的第一个参数:
表达式
一个表达式,用于标识包含要渲染的属性。
在这种情况下,并没有属性,因此并没有什么可以从中获取名称。
要解决此问题,您可以使用Html.TextBox
并明确指定名称:
@Html.TextBox("priority", Model, new { @class = "spinner" })
好吧,我真的怀疑使用基元类型作为模型会有问题。
你可以做
@model Task
@Html.TextBoxFor(x => x.Priority, new{@class="spinner"})
和在你的控制器
return PartialView("TaskPriority", task);
解决方案2:使用仅具有一个整数属性的ViewModel
。
试试这个,
型号
public class RegisterModel
{
public int ID { get; set; }
}
查看
@model RegisterModel
@Html.TextBoxFor(x => x.ID, new { @class = "spinner" })
or
@Html.TextBox("ID",null, new { @class = "spinner" })
控制器
[HttpGet]
public PartialViewResult TaskPriority(int ID)
{
var task = Task.Get(ID);
return PartialView("TaskPriority", task );
}