【问题标题】:Getting values of input fields in MVC在 MVC 中获取输入字段的值
【发布时间】:2014-08-22 10:05:24
【问题描述】:

我对 MVC 有点陌生,也许我只是误解了一些东西,但我无法弄清楚如何以优雅的方式执行以下操作: 我有以下不想更新的实体: 型号:

public class Entity
    {
        [Key]
        public int Id { get; set; }
        public DateTime Created { get; set; }
        public int FieldInt { get; set; }
        public DateTime FieldDate { get; set; }
        public int FieldOther {get; set; }
    }
}

查看: 我的视图显示一堆带有复选框的文本行。复选框由两个数据属性标识:data-field-int 和 data-field-date,如下所示。

@html.BeginForm("Confirm", "Home", FormMethod.Post) {
...
<input type='checkbox' data-field-int="1" data-field-date="2014/01/01" />
<input type='checkbox' data-field-int="1" data-field-date="2014/02/02" />
<input type='checkbox' data-field-int="1" data-field-date="2014/03/03" />
...
<button id="ConfirmButton" type="submit" class="btn btn-primary">Confirm</button>
}

我在控制器中想要的是当按下 ConfirmButton 时,为每个复选框创建一个 Entity 对象,该对象分别使用填充了 data-field-int 和 data-field-date 属性的 fieldInt 和 fieldDate 的值进行检查。

我可以通过使控制器操作将 FormCollection 作为输入并将 name 属性放在复选框上并连接 fieldInt 和 fieldDate 然后在控制器中将它们分开并更新数据库来做到这一点。但似乎会有更好的方法,因为 MVC 对实体框架非常聪明。

希望大家能帮我理解

谢谢你, 彼得

【问题讨论】:

    标签: c# asp.net-mvc entity-framework checkbox


    【解决方案1】:

    欢迎使用 MVC。

    -将 razor 引擎与模型实体一起使用是最佳实践。

    -在上面提到的代码中你需要设置这样的东西

    @using ( Html.BeginForm("Confirm", "Home", FormMethod.Post))
    

    -由于您是新手,请尝试使用带有选定模板的强类型视图,它会为您生成剃须刀代码,即您可以深入分析

    -最后只需使用model x作为参数给你[HttpPost]动作方法并将这些实体转换为你的Entity framework实体并保存在DB中

    另外: 数据属性不包含在随表单发布的数据中,因此无法在控制器操作中读取它们。尝试使用隐藏字段

    喜欢 @Html.HiddenFor(m =&gt; m.FieldInt)&lt;input type="hidden" name="FieldInt" value="1234" /&gt;//做同样的休息

    传递静态然后@{Model.phoneno = "1234"}

    【讨论】:

    • 感谢您的回答,但我不明白的是如何将 @html.checkboxFor(.. 与在 field1 = x 和 field2 = y
    • 谢谢,我想我开始明白了☺
    【解决方案2】:

    这个问题由两部分组成:

    1。 最好在 razor 视图中指定 @model 并使用以模型为参数的 lambda 表达式的辅助方法。

    @model MyType
    
    html.Textbox(model => model.FieldOther,...)
    

    然后您创建采用模型的操作

    [HttpPost]
    ActionResult MyAction(MyModel model) {
     ....
    }
    

    Mvc 将尝试创建模型实例并将表单字段映射到模型属性。

    2.

    您可以将实体用作模型,但相信我,创建所谓的数据传输对象和/或视图模型是有原因的,随着应用程序的发展,单个视图也会发展以处理来自许多相关数据库实体的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 2013-02-06
      • 2022-12-16
      • 2021-06-14
      相关资源
      最近更新 更多