Tag: 模型绑定

MVC 3模型绑定子types(抽象类或接口)

说我有一个产品模型,产品模型有一个ProductSubType属性(抽象),我们有两个具体的实现衬衫和裤子。 这里是来源: public class Product { public int Id { get; set; } [Required] public string Name { get; set; } [Required] public decimal? Price { get; set; } [Required] public int? ProductType { get; set; } public ProductTypeBase SubProduct { get; set; } } public abstract class ProductTypeBase { } public class Shirt : […]

在ASP.NET MVC中,多选列表如何与模型绑定一起工作?

如果在ASP.NET MVC中有一个select列表设置为multiple,那么modelbinding是如何工作的? 它是什么返回您所选的项目,一个数组? <SELECT NAME="toppings" MULTIPLE SIZE=5> <option value="mushrooms">mushrooms</option> <option value="greenpeppers">green peppers</option> <option value="onions">onions</option> <option value="tomatoes">tomatoes</option> <option value="olives">olives</option> </SELECT>

在ASP.NET MVC 3中绑定到枚举的模型

我有一个方法在我的控制器接受一个对象作为参数,并返回一个JsonResult 。 这个对象的属性之一是一个有三个可能值的枚举。 我认为,当客户端传入一个int属性它将填充枚举,但它不,它默认为0,枚举设置为它的第一个可能的select。 有什么build议么?

MVC 4列表模型绑定如何工作?

如果我想要一个表单中的一组input绑定到MVC 4中的List ,我知道input name属性的以下命名约定将工作: <input name="[0].Id" type="text" /> <input name="[1].Id" type="text" /> <input name="[2].Id" type="text" /> 但我很好奇如何原谅模型活页夹。 例如,以下内容: <input name="[0].Id" type="text" /> <input name="[3].Id" type="text" /> <input name="[8].Id" type="text" /> 模型活页夹如何处理? 它会绑定到一个长度为9的List ,用空值吗? 或者它还会绑定到长度为3的List ? 或者它会完全窒息? 为什么我在乎 我想实现一个dynamic的表单,用户可以在表单中添加行,也可以从表单中删除行。 所以,如果我用户从8行总共删除第2行,我想知道是否需要重新编号所有后续input。

如何将IEnumerable列表传递给控制器​​在MVC包括checkbox状态?

我有一个mvc应用程序,我正在使用这样的模型: public class BlockedIPViewModel { public string IP { get; set; } public int ID { get; set; } public bool Checked { get; set; } } 现在我有一个视图来绑定一个像这样的列表: @model IEnumerable<OnlineLotto.Web.Models.BlockedIPViewModel> @using (Html.BeginForm()) { @Html.AntiForgeryToken() } @foreach (var item in Model) { <tr> <td> @Html.HiddenFor(x => item.IP) @Html.CheckBoxFor(x => item.Checked) </td> <td> @Html.DisplayFor(modelItem => item.IP) </td> […]

ASP.NET MVC绑定到字典

我试图在MVC中绑定字典值。 在行动中我有: model.Params = new Dictionary<string, string>(); model.Params.Add("Value1", "1"); model.Params.Add("Value2", "2"); model.Params.Add("Value3", "3"); 并在视图内有: @foreach (KeyValuePair<string, string> kvp in Model.Params) { <tr> <td> <input type="hidden" name="Params.Key" value="@kvp.Key" /> @Html.TextBox("Params[" + kvp.Key + "]") </td> </tr> } 但是视图不显示初始值,当表单提交时, Params属性为空?

MVCdate时间绑定与不正确的date格式

Asp.net-MVC现在允许隐式绑定DateTime对象。 我有一个行动 public ActionResult DoSomething(DateTime startDate) { … } 这成功地将string从ajax调用转换为DateTime。 但是,我们使用date格式dd / MM / yyyy; MVC转换为MM / dd / yyyy。 例如,使用string'09 / 02/2009'提交对操作的调用会导致date时间为'02 / 09/2009 00:00:00',或在本地设置中为9月2日。 为了date格式,我不想推出自己的模型绑定器。 但似乎不必要改变的行动接受一个string,然后使用DateTime.Parse如果MVC是能够做到这一点对我来说。 有什么办法可以改变默认模型联编程序中用于DateTime的date格式吗? 不应该默认模型联编程序使用您的本地化设置吗?

带有List <BaseClass>和编辑器模板的ViewModel

我有一个观点,列出添加到平面图的表格。 表派生自TableInputModel以允许RectangleTableInputModel , CircleTableInputModel等 ViewModel有一个TableInputModel的列表,它们都是派生types之一。 我有一个派生types的每个部分视图,并给出一个混合派生typesList框架知道如何呈现它们。 但是,在提交表单时,types信息会丢失。 我已经尝试使用自定义模型联编程序,但是因为types信息在提交时会丢失,所以无法工作… 有没有人试过这个?

多态模型绑定

在之前的MVC版本中,这个问题已经被问到了。 这个博客也有关于解决这个问题的方法。 我想知道是否MVC3引入了任何可能的帮助,或者如果有任何其他的select。 简而言之。 这是情况。 我有一个抽象的基础模型,和2个具体的子类。 我有一个用EditorForModel()渲染模型的强types视图。 然后我有自定义模板来呈现每个具体types。 问题出现在后期。 如果我做了后置动作方法以基类作为参数,那么MVC不能创build它的抽象版本(我不想要反正,我想它创build实际的具体types)。 如果我创build了多个仅通过参数签名变化的后操作方法,那么MVC抱怨它是不明确的。 所以据我所知,我有几个关于如何解决这个问题的select。 我不喜欢其中的任何一种,但是我会在这里列出来: 创build一个自定义的模型绑定器,如Darin在我链接的第一篇文章中所build议的。 创build一个鉴别属性作为我build议链接的第二篇文章。 根据types发布到不同的操作方法 ??? 我不喜欢1,因为它基本上是隐藏的configuration。 其他一些开发代码的开发人员可能并不知道,并且浪费了大量的时间来弄清楚为什么事情会改变。 我不喜欢2,因为它似乎有点哈克。 但是,我倾向于这种方法。 我不喜欢3,因为这意味着违反干。 还有其他build议吗? 编辑: 我决定采用达林的方法,但做了一点小改变。 我把这个添加到我的抽象模型中: [HiddenInput(DisplayValue = false)] public string ConcreteModelType { get { return this.GetType().ToString(); }} 然后隐藏自动生成在我的DisplayForModel() 。 唯一要记住的是,如果你不使用DisplayForModel() ,你必须自己添加它。

部分视图使用Html.BeginCollectionItem帮助器传递集合

我做了一个小的项目,在这里理解Stephen Muecke的答案:将相同的部分视图称为多次数据给控制器? 几乎一切正常。 javascript从Partial View中添加了新的字段,我可以通过控制器方法为partial视图插入“temp”值来告诉它们绑定到模型。 但是,当我提交新的字段时,AddRecord()方法会抛出一个exception,显示模型没有被传入(“对象引用未设置为对象的实例”)。 此外,当我查看页面源代码时,BeginCollectionItem帮助程序正在插入隐藏标记,因为它应该围绕主视图中的表格显示预先存在的logging,而不是围绕javascript添加的新字段。 我究竟做错了什么? 我很新,所以感谢您的耐心! 我的主要观点: @model IEnumerable<DynamicForm.Models.CashRecipient> @using (Html.BeginForm("AddDetail", "CashRecipients", FormMethod.Post)) { @Html.AntiForgeryToken() <div id="CSQGroup"> </div> } <div> <input type="button" value="Add Field" id="addField" onclick="addFieldss()" /> </div> <script> function addFieldss() { //alert("ajax call"); $.ajax({ url: '@Url.Content("~/CashRecipients/RecipientForm")', type: 'GET', success:function(result) { //alert("Success"); var newDiv = document.createElement("div"); var newContent = document.createTextNode("Hi there and […]