我正在开发ASP .NET MVC 5应用程序,现在正在实现新闻稿功能。我有所有东西的主人(父视图),在这个视图上还有用于电子邮件和提交按钮的输入字段的框。单击此按钮后,控制器方法将此电子邮件插入订户选项卡。我有这个时事通讯的GET / POST方法和PartialView(所有时事通讯的代码都在不同的区域)。 一切正常,只有一个问题。在母版页上,我有另一个提交按钮(用于提交搜索字符串),因此每次提交搜索字符串后,代码也会提交新闻稿表单。 是否有任何解决方案将这两个提交按钮分开,并在提交简报(PartialView)表单后不刷新整个页面?
这是我的Newsletter PartialView,名为 _SignIn
@using (Html.BeginForm())
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.email, htmlAttributes: new {@class = "control-label col-md-12", style="text-align: left; padding-left: 30px;"})
<div class="col-md-12" align="center">
@Html.EditorFor(model => model.email, new {htmlAttributes = new {@class = "form-control"}})
@Html.ValidationMessageFor(model => model.email, "", new {@class = "text-danger"})
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.NewsletterType, htmlAttributes: new { @class = "control-label col-md-12", style = "text-align: left; padding-left: 30px;" })
<br />
<div class="col-md-12" align="center">
@Html.EnumDropDownListFor(model => model.NewsletterType, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.NewsletterType, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-4 col-md-10" style="padding-bottom: 10px;">
<input type="submit" value="Prihlásiť" class="btn btn-success" />
</div>
</div>
</div>
感谢您的回复!
答案 0 :(得分:1)
您只能使用ajax调用实现此目的,不需要刷新整个页面。
NSSQLiteStoreType
答案 1 :(得分:0)
在按钮中添加名称属性,并使用控制器中的值来区分调用的按钮。
<button type="submit" id="btnSave" name="Command" value="Save">Save</button>
<button type="submit" id="btnSubmit" name="Command" value="Submit">Submit</button>
public ActionResult YourAction(Model model, string Command)
{
if(Command == "Save") {}
}
有关详细信息,请参阅Handling multiple submit buttons。
要阻止完整的回发(刷新),您可以使用AJAX
答案 2 :(得分:0)
您必须有两个单独的表单来处理每个提交或通过某种形式的Javascript处理它。我建议使用2个单独的表格。将搜索字符串提交放在父视图中,因为它应该在所有页面上并关闭表单。然后,您可以使用其中的表单呈现简报订阅的部分视图。
基本上:
父视图
...
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
...
<!-- Search string input field and submit button -->
...
</div>
}
<div>
@Html.RenderPartial("_SignUp")
</div>
...
_SignUp部分视图
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
...
<!-- Subscriber email input and submit -->
...
</div>
}