Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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
Asp.net mvc post调用中的编辑器模板未正确传递模型_Asp.net Mvc_Razor - Fatal编程技术网

Asp.net mvc post调用中的编辑器模板未正确传递模型

Asp.net mvc post调用中的编辑器模板未正确传递模型,asp.net-mvc,razor,Asp.net Mvc,Razor,大家好,两天前有人帮我提出了一个解决方案,使用razor使用编辑器模板从域模型中的列表生成几个文本框,我添加了一些js,使其更具动态性,但当我在控制器中对action方法进行post调用时,它不会刷新文本字段中的值,我会在这里放一些代码也许你知道问题出在哪里 这就是我想要实现的目标 //反机器人字段 公共字符串Customer{get;set;} public int ContentItemId{get;set;} 公共字符串标题{get;set;} 公共字符串说明{get;set;} pub

大家好,两天前有人帮我提出了一个解决方案,使用razor使用编辑器模板从域模型中的列表生成几个文本框,我添加了一些js,使其更具动态性,但当我在控制器中对action方法进行post调用时,它不会刷新文本字段中的值,我会在这里放一些代码也许你知道问题出在哪里

这就是我想要实现的目标

//反机器人字段
公共字符串Customer{get;set;}
public int ContentItemId{get;set;}
公共字符串标题{get;set;}
公共字符串说明{get;set;}
public int UserId{get;set;}
公共字符串称呼{get;set;}
公共字符串名{get;set;}
公共字符串Lastname{get;set;}
公共字符串电子邮件{get;set;}
[显示(Name=“收件人”)]
公共列表收件人{get
{返回新列表
{
新收件人{Name=”“,Email=”“},
//x10
}; 
} 
}
[必需]
[显示(Name=“Nachricht”)]
公共字符串消息{get;set;}
}
公共类收件人{
[显示(Name=“收件人姓名:”)]
公共字符串名称{get;set;}
[显示(Name=“收件人电子邮件地址:”)]
[数据类型(数据类型.电子邮件地址)]
公共字符串电子邮件{get;set;}
}
每个输入字段都具有以下属性 因此,我最多有十个字段,每个字段都有一个id收件人(1\u 10)\姓名/电子邮件

这是我的看法

@using (Html.BeginForm("Submit", "Share"))
 { 
     @Html.AntiForgeryToken() 
     @Html.HiddenFor(m => m.UserId)
     @Html.HiddenFor(m => m.ContentItemId)
     @Html.TextBoxFor(m => m.Customer, new { @class = "b2a534d1" })        
     <p>Hi: @Html.DisplayTextFor(m => m.Salutation) @Html.DisplayTextFor(m => m.Firstname) @Html.DisplayTextFor(m => m.Lastname)</p>            
     <table border="0" style="padding:5">
        <tr>
            <td class="editor-label">@Html.LabelFor(m => m.Title): </td>
            <td class="editor-field">@Html.DisplayTextFor(m => m.Title)

            </td>
        </tr>
        <tr> 
            <td class="editor-label">@Html.LabelFor(m => m.Description): </td>
            <td class="editor-field">@Html.DisplayTextFor(m => m.Description)

            </td>
        </tr>
        <tr>
            <td>@Html.LabelFor(m => m.Message)</td>
            <td>@Html.TextAreaFor(m => m.Message)</td>
        </tr>             
        </table>
        <table >                       
            @Html.EditorFor(m => m.Recipients)
        </table>
        <table>                   
            <tr>
                <td>
                    <a href="#" id="add-recipient" class="small button">Add Recipient</a></td>            
                <td><input type="submit" class="button med primary" style="float: right;" value="ABSENDEN" /></td>
            </tr>
        </table>      
 }    
@使用(Html.BeginForm(“提交”、“共享”))
{ 
@Html.AntiForgeryToken()
@Html.HiddenFor(m=>m.UserId)
@Html.HiddenFor(m=>m.ContentItemId)
@Html.TextBoxFor(m=>m.Customer,新的{@class=“b2a534d1”})
您好:@Html.DisplayTextFor(m=>m.saltation)@Html.DisplayTextFor(m=>m.Firstname)@Html.DisplayTextFor(m=>m.Lastname)

@Html.LabelFor(m=>m.Title): @DisplayTextFor(m=>m.Title) @Html.LabelFor(m=>m.Description): @DisplayTextFor(m=>m.Description) @LabelFor(m=>m.Message) @Html.TextAreaFor(m=>m.Message) @EditorFor(m=>m.Recipients) }
这是我的收信人

@model PetterLetter.Application.Models.Recipient


<p class="recipient"> Name: @Html.EditorFor(x=>x.Name) Email: @Html.EditorFor(x => x.Email) </p>
@model PetterLetter.Application.Models.Recipient

名称:@Html.EditorFor(x=>x.Name)电子邮件:@Html.EditorFor(x=>x.Email)

在我调试解决方案之后,这就是我从视图的模型中得到的

此收件人应在编辑器模板的输入字段中输入值


我做错了什么?

我在动态加载表单时遇到了类似的问题,可以从

结果是,当加载多个表单时,必须为它们指定不同的索引值(而不是每次[0])


我已经解决了这个问题,为集合索引使用了隐藏字段,并为其指定了一个唯一的值。它实际上可以是任何东西,比如日期时间字符串,只要在每个输入名称中也使用索引值。阅读链接文章,特别是非顺序索引部分。

我在动态加载表单时遇到类似问题,可以从

结果是,当加载多个表单时,必须为它们指定不同的索引值(而不是每次[0])


我已经解决了这个问题,为集合索引使用了隐藏字段,并为其指定了一个唯一的值。它实际上可以是任何东西,比如日期时间字符串,只要在每个输入名称中也使用索引值。阅读链接文章,特别是非顺序索引部分。

它们不是每次在每个项目上增加时都为0:S我无论如何都会阅读链接啊。有一件事可能会有所帮助,那就是查看回发的表单数据。问题可能不在模型绑定中。如果您有chrome developer tools或firebug,并打开调试器,调试器一停止页面,就检查请求表单数据。如果要回发的表单数据看起来不错,那么可能是模型绑定器或其他东西。请注意,模型的收件人集合似乎没有setter。可能还需要补充一点。我用Gliesh查看请求,这就是我在模型对象@brightwarden中得到的结果,就是这样!我想为一些简单的事情自杀:(总共浪费了一天,但至少做得很好,非常感谢!它们不是0,每次它们在每个项目上都增加:S我无论如何都会阅读链接啊。一件可能有用的事情是查看发回的表单数据。问题可能不在模型绑定中。如果您有chrome developer工具或firebug,并打开调试器,调试器停止页面后,立即检查请求表单数据。如果正在回发的表单数据看起来不错,则可能是模型绑定器或其他原因。刚刚注意到,您模型的Recipients集合似乎没有setter。可能需要添加setter。我用Gliesh查看请求,这就是我在model objec中得到的结果t@brightwarden就是这样!我想为一些事情自杀。很简单:(浪费了整整一天,但至少做得很好,非常感谢!
@model PetterLetter.Application.Models.Recipient


<p class="recipient"> Name: @Html.EditorFor(x=>x.Name) Email: @Html.EditorFor(x => x.Email) </p>