部分视图和html表单Asp-Mvc

本文关键字:表单 Asp-Mvc html 视图 | 更新日期: 2023-09-27 18:29:01

我正在尝试呈现包含一个简单html表单的部分视图。我希望在处理重载控制器方法的回发时从控制器呈现该表单。我尝试过@Html.Action("ContactForm"),但由于子操作无法重定向,所以出现异常。

我的控制器:

public ActionResult Index()
{
    return View();
}
[HttpGet]
public ActionResult ContactForm()
{
    return PartialView(new ContactForm()); 
}
[HttpPost]
public ActionResult ContactForm(ContactForm Contact)
{
    return RedirectToAction("FormResults", new { ContactForm = Contact });
}
public ActionResult FormResults(ContactForm Contact)
{
    return PartialView(Contact);
}

我的表单:

@using(Html.BeginForm())
{
    <h2>Contact Form</h2>
    <div class="input-group">
        <h4>@Html.LabelFor(m => m.FirstName, "First Name")</h4>
        @Html.TextBoxFor(m => m.FirstName, new { @class = "form-control", @placeholder = "First Name" })
    </div>
    <div class="input-group">
        <h4>@Html.LabelFor(m => m.LastName, "Last Name")</h4>
        @Html.TextBoxFor(m => m.LastName, new { @class = "form-control", @placeholder = "Last Name" })
    </div>
    <div class="input-group">
        <h4>@Html.LabelFor(m => m.Email, "Email")</h4>
        @Html.TextBoxFor(m => m.Email, new { @class = "form-control", @placeholder = "Email", @type = "text" })
    </div>
    <input type="submit" class="btn btn-info" value="Submit"  />
}

如能为我提供帮助,我将不胜感激。

部分视图和html表单Asp-Mvc

尝试用div和某个id包围表单并使用:

@using(Ajax.BeginForm("ContactForm","YourController",new AjaxOptions()
{
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "yourCertainId",
    HTTPMethod = "POST"
})

和你的行动方法:

[HttpPost]
public ActionResult ContactForm(ContactForm Contact)
{
    return Partial("YourPartialName", Contact });
}

确保在视图底部包含bundle jqueryval。

您不需要第二个控制器方法"FormResults"

这样的东西不适合你吗?

我认为你不需要重定向。

[HttpPost]
public ActionResult ContactForm(ContactForm Contact)
{
    return PartialView("FormResults", Contact);
}

这使用

PartialView(string viewName, object model) 

Controller类中PartialView方法的重载。

这允许您使用与ActionResult的方法名称不匹配的视图。

同样的道理也适用于普通的"View"方法。