0

我创建了一个允许使用 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 行上引发异常。

那么我在这里做错了什么,为什么错了?我是否过于复杂了?

4

3 回答 3

3

视图引擎尝试检索文本框的名称。通常,它是根据用作文本框源的属性名称构造的。请注意MSDNTextBoxFor上第一个参数的描述方式:

表达

一个表达式,用于标识包含要呈现的属性的对象。

在这种情况下,没有财产,因此没有任何东西可以从中获取名称。

要解决它,您可以使用Html.TextBox并明确指定名称:

@Html.TextBox("priority", Model, new { @class = "spinner" })
于 2013-08-21T10:39:17.637 回答
1

好吧,我真的怀疑使用原始类型作为模型会出现一些问题。

你可以做

@model Task

@Html.TextBoxFor(x => x.Priority, new{@class="spinner"})

在你的控制器中

return PartialView("TaskPriority", task);

解决方案2:使用 a ViewModel,只有一个整数属性。

于 2013-08-21T10:39:48.203 回答
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 );
}
于 2013-08-21T10:44:11.593 回答