Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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 如何在ASP.NETMVC中预填充表单?_Asp.net Mvc_Ajax_Forms - Fatal编程技术网

Asp.net mvc 如何在ASP.NETMVC中预填充表单?

Asp.net mvc 如何在ASP.NETMVC中预填充表单?,asp.net-mvc,ajax,forms,Asp.net Mvc,Ajax,Forms,当您有一个由Html.BeginForm()创建的ASP.Net MVC表单时,如何填充表单中的字段?就 <asp:Content ID="Main" ContentPlaceHolderID="MainContent" runat="server"> <h2>Edit Dinner</h2> <%= Html.ValidationSummary("Please correct the errors and try again.") %> <

当您有一个由Html.BeginForm()创建的ASP.Net MVC表单时,如何填充表单中的字段?就

<asp:Content ID="Main" ContentPlaceHolderID="MainContent" runat="server">
<h2>Edit Dinner</h2>
<%= Html.ValidationSummary("Please correct the errors and try again.") %>
<% using (Html.BeginForm()) { %>
   <p>
       <label for="Title">Dinner Title:</label>
       <%= Html.TextBox("Title") %>
       <%= Html.ValidationMessage("Title", "*") %>
   </p>
并将其用作模型,得到正确的值。或者至少在验证失败并且表单重新显示时是这样

我这样问是因为我有一个表单案例,它是通过AJAX(使用AJAX.BeginForm())提交的,表单会被刷新。我正在为它创建一个新的模型对象empty,但它仍在加载上次提交的值。当我在没有AJAX的情况下提交时,一切都很好

更新


我正在监视模板中的调试器。Model.Dinner.Title等于“”,但Html.TextArea(“Title”,Model.Dinner.Title)将上一个提交的值放入文本区域内。

您还可以强制值为空:

<% =Html.TextBox("Title", null, new { @value = '' }); %>


不过,将空模型(默认值)传递给视图会更好吗编辑我明白了,这就是你要做的;)。根据我的第一个建议,检查该请求是否为AJAX请求,然后在此基础上将emtpy@值传递到文本框。

我不确定我是否理解该问题。您执行了一个ajax请求,但表单中的文本字段在调用后仍保留其值

如果是这种情况,那么您应该检查这些文本字段是否位于与AjaxOption类的UpdateTargetId属性相关联的元素内。在执行ajax请求时,只更新页面的一部分(UpdateTargetId属性引用的部分)。无论是否更新模型,页面中的其余字段都不会更新。看看这个例子:

<%= Html.TextBox("Title") %>
....
<div id="myDiv">
    <%= Html.TextBox("SomeField") %>
</div>

<% using (Ajax.BeginForm(new AjaxOptions() { UpdateTargetId = "myDiv" })) {%>
    //... blah blah blah
<% } %>

....
//... 废话废话
当您提交ajax表单时,只有SomeField字段将得到更新,Title字段将保持不变

提交常规表单时,整个页面都会更新,这就是为什么所有字段都会在没有ajax的情况下更新


编辑:打字。

数据存储在ModelState中。HtmlHelper方法将根据表单元素的名称查找存储在模型状态中的值。重定向时会清理ModelState,但在返回时不会清理ModelState,就像AJAX调用一样。

我将向视图传递一个空模型。
<%= Html.TextBox("Title") %>
....
<div id="myDiv">
    <%= Html.TextBox("SomeField") %>
</div>

<% using (Ajax.BeginForm(new AjaxOptions() { UpdateTargetId = "myDiv" })) {%>
    //... blah blah blah
<% } %>