获取MVC中输入字段的值

本文关键字:字段 输入 MVC 获取 | 更新日期: 2023-09-27 18:10:57

我对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属性填充。

我可以通过使控制器动作采取FormCollection作为输入,并通过在复选框上放置一个名称属性与fieldInt和fieldDate的连接,然后在控制器中分离它们并更新数据库来做到这一点。但似乎会有一个更好的方法,因为MVC是如此聪明的实体框架。

我希望你们能帮我理解

谢谢你,彼得。

获取MVC中输入字段的值

欢迎使用MVC。

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

在上面提到的代码中,您需要设置如下内容

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

-当你是新手时,尝试使用强类型视图和选定的模板,为你生成razor代码,即你可以分析深度

-最后使用model x作为[HttpPost]动作方法的参数并将这些实体转换为您的实体框架实体并保存在DB

另外

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

@Html.HiddenFor(m => m.FieldInt)<input type="hidden" name="FieldInt" value="1234" />//对rest做类似的处理

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

这个问题由两部分组成:

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

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

然后创建操作,该操作采用模型

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

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

2。

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