Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.net MVC2-表单后期绑定_C#_Asp.net Mvc 2_Model Binding - Fatal编程技术网

C# Asp.net MVC2-表单后期绑定

C# Asp.net MVC2-表单后期绑定,c#,asp.net-mvc-2,model-binding,C#,Asp.net Mvc 2,Model Binding,我一辈子都搞不清楚我做错了什么 我的视图继承自一个SearchModel类 public class SearchModel { public String Something { get; set; } public List<SearchField> SearchFields { get; set; } } public class SearchField { [XmlIgnore] public Boolean

我一辈子都搞不清楚我做错了什么

我的视图继承自一个
SearchModel

 public class SearchModel
    {
        public String Something { get; set; }
        public List<SearchField> SearchFields { get; set; }
    }

public class SearchField
{
    [XmlIgnore]
    public Boolean Include { get; set; }

    [XmlAttribute("Required")]
    public Boolean Required { get; set; }

    [XmlAttribute("Field")]
    public String FieldName { get; set; }

    [XmlText]
    public String DisplayName { get; set; }

    [XmlIgnore]
    public FilterMethod FilterOperator { get; set; }

    [XmlIgnore]
    public String Value { get; set; }
}
SearchController索引页具有用于呈现字段的属性

<% using (Html.BeginForm())
   {%>
<%= Html.TextBox("Something", Model.Something) %>
<% for (int i = 0; i < Model.SearchFields.Count; i++)
   {

%>              
<%= Html.Label(Model.SearchFields[i].DisplayName) %>
<%= Html.DropDownListFor(x => x.SearchFields[i].FilterOperator, Model.SearchFields[i].FilterOperator.ToSelectList(), new { @class = "textField" })%>
<%= Html.TextBoxFor(x => x.SearchFields[i].Value) %>

<%= Html.ValidationMessageFor(x => x.SearchFields[i].Value) %>

<% } %>
<button type="submit" value="Search" class="SearchBtn">
    Search</button>
<% } %>

x、 SearchFields[i].FilterOperator,Model.SearchFields[i].FilterOperator.ToSelectList(),新的{@class=“textField”})%>
x、 搜索字段[i]。值)%>
x、 搜索字段[i]。值)%>
搜寻
当我修改SearchField.value属性的值并按下submit按钮时,它将发布到
公共操作结果索引(SearchModel SearchModel)
方法

searchModel变量包含集合
搜索字段
,但是只有“
”和“
过滤器运算符
”属性不为空

即使我不想在表单中显式列出其他属性,如何在帖子中包含这些属性

下图显示了发送到“索引”显示页面的值

下图显示了POST的输出

如果要对这些值进行后期备份,则需要在视图中通过将字段作为隐藏字段提供这些值

Html.HiddenFor(m => m.searchFields[i].FilterOperator)
或者使用某种工厂,用默认值填充模型

如何包括其他属性 在岗位上,即使我不想 在表单中明确列出它们

您必须再次获取它们或将它们填充到hiddenfield中,基本上让用户定义您的只读数据


这就是为什么我喜欢将PostModel保留为ViewModel的属性。那么我的post-action方法只需要PostModel参数。否则,就像在您的示例中一样,您将返回此混合ViewModel/PostModel,并且需要确定要使用哪些属性。

使用该模板时HTML输出的外观如何?你有索引的输入字段吗?i、 例如,如果您不想在表单中列出它们,我们可以假设您不希望用户更改它们。如果是这种情况,您可以根据所需的任何选择标准,在返回时在控制器中填充这些值。或者像Rene显示的那样。@CodingSomnia:是的,它们是索引输入字段:name=“SearchFields[0]。Value”
Html.HiddenFor(m => m.searchFields[i].FilterOperator)