我创建了一个部分视图,允许使用jQuery spinner插件更新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行抛出异常。
那么我在这里做错了什么,为什么这是错的?我是不是太复杂了?
答案 0 :(得分:3)
查看引擎尝试检索文本框的名称。通常,它是从用作文本框源的属性的名称构造的。请注意MSDN上描述TextBoxFor
的第一个参数:
表达
标识包含该对象的对象的表达式 要渲染的属性。
在这种情况下,没有属性,因此没有任何东西可以从中获取名称。
要解决此问题,您可以使用Html.TextBox
并明确指定名称:
@Html.TextBox("priority", Model, new { @class = "spinner" })
答案 1 :(得分:1)
好吧,我真的怀疑使用原始类型作为模型的一些问题。
你可以做到
@model Task
@Html.TextBoxFor(x => x.Priority, new{@class="spinner"})
并在您的控制器中
return PartialView("TaskPriority", task);
解决方案2:
使用ViewModel
,只有一个整数属性。
答案 2 :(得分:0)
试试这个,
<强>模型强>
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 );
}