带有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行上引发异常。

那么,我在这里做错了什么,为什么会错呢?我是不是太复杂了?

带有int模型的MVC部分视图引发异常

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 );
}