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