部分视图和HTML格式Asp Mvc

时间:2014-11-04 19:35:32

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我正在尝试渲染包含简单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"  />
}

任何有关如何实现这一目标的帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

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

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

和你的ActionMethod:

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

确保在视图底部包含了捆绑jqueryval。

你不需要第二个控制器方法“FormResults”

答案 1 :(得分:0)

这样的事情不适合你吗?

我认为你不需要重定向。

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

这使用

PartialView(string viewName, object model) 

Controller类中PartialView方法的重载。

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

同样适用于简单的“查看”方法。