【问题标题】:How to assign null/string to an int type in MVC Razor using Entity Framework?如何使用实体框架将 null/string 分配给 MVC Razor 中的 int 类型?
【发布时间】:2015-09-28 11:09:30
【问题描述】:
  • 我正在使用一个使用实体框架的简单 MVC 4 应用程序。

    • 在我的视图中,我使用 webgrid 显示表格中的数据。
    • View 还有用于保存表格中任何新记录的文本框(EditorFor)。
    • 我正在为文本框使用部分视图,因为在页面启动时,文本框应保持为空。
    • 在 5 列中,有两列是整数类型。
    • 为了使文本框最初为空,我使用一个新对象作为 -

      @if (!dataGrid.HasSelection) {
      Datamodel = new EntityFrDemo.Models.FacultyDetails { DepartmentID = 0, Name = "", Subject = "", YrsExp = 0, Email = "" };

      Html.RenderPartial("~/Views/Shared/_FacultyDetails.cshtml", Datamodel); }

      //--------------------------------------------- --------------------------

    @Html.LabelFor(model => model.DepartmentID) @Html.EditorFor(model => model.DepartmentID) @Html.ValidationMessageFor(model => model.DepartmentID)

    //--------------------------------------------- --------------------------------

    • 所以我可以让我的框为空,​​但是对于整数类型框“0”即将到来,因为我只能分配零。

那么我怎样才能将整数值类型框覆盖/叠加为空字符串类型,以便只有在没有选择任何行的情况下,即在初始阶段...?

【问题讨论】:

  • 听起来你应该使用int? 而不是int
  • 不,我不能使用它,因为实体框架已经在自动生成的实体类中创建了整数类型的“部门 ID”。我尝试使用它,但它给出了 int 类型的转换错误?到 int.
  • 然后创建一个视图模型...

标签: asp.net-mvc-4 razor casting razorengine


【解决方案1】:

当您使用带有 int 值的 @Html.EditorFor() 时,Razor 会生成这样的 html 标签

<input type="number" name="propertyName" id="propertyName" value="propertyValue" />

如果您没有为 int 属性设置值,则默认 int 值为零。要在 html 标记中设置另一个值,您可以不使用 Razor 编写它,也可以像下面的代码一样设置值。

@Html.EditorFor(model => model.DepartmentID, new { htmlAttributes = new { @Value = "" } })

注意:它是大写的“V”,而不是小写的“v”。

【讨论】:

  • 谢谢,但是没有用。最好创建一个 ViewModel。
  • @Zeeshaan 没用?你收到错误信息了吗?还是文本框仍然呈现为零?
  • 你能在这里复制并粘贴 Razor sintax 吗?
猜你喜欢
  • 1970-01-01
  • 2021-03-08
  • 2014-12-05
  • 1970-01-01
  • 2022-01-27
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
相关资源
最近更新 更多