是否有可能有两个输入或按钮控件,在绑定到Html.BeginForm的同一控制器中触发两个不同的操作?
在以下示例中,我希望Subscribe输入在控制器上调用Subscribe action.这很好用.我希望取消订阅输入来调用我的取消订阅操作.我该如何实现这一目标?TIA.
<% using (Html.BeginForm("Subscribe", "NewsLetter"))
{%>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.EmailAdress) %>
<%= Html.ValidationMessageFor(
model => model.EmailAdress) %>
</div>
<div >
<input type="submit" class="submit" value="Subscribe" />
<input type="submit" class="submit" value="Unsubscribe" />
</div>
<% } %>
Run Code Online (Sandbox Code Playgroud)
更新:
这个问题的更多背景:
我的NewsLetterController有两个订阅订阅和取消订阅,如下所示:
public class NewsLetterController : Controller
{
[HttpPost]
public ActionResult Subscribe(NewsletterSubscriber subscriber)
{
// do something
}
[HttpPost]
public ActionResult Unsubscribe(NewsletterSubscriber subscriber)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
我希望我可以从同一个Form元素中调用每个动作,但这显然是错误的.我如何仍然维护MVC模式,但如果可能,避免编写脚本?发布的HTML是主页上呈现的局部视图的一部分.
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl
<AkwiMemorial.Models.NewsletterSubscriber>" %>
<h2><strong>Newsletter</strong></h2>
<legend>Enter your email</legend>
<% using (Html.BeginForm("Subscribe", "NewsLetter"))
{%>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.EmailAdress) %>
<%= Html.ValidationMessageFor(model => model.EmailAdress) %>
</div>
<div >
<input type="submit" class="submit" name="sub"
value="Subscribe" />
<input type="submit" class="submit" name="unsub"
value="Unsubscribe" />
</div>
<% } %>
Run Code Online (Sandbox Code Playgroud)
HTML form元素只有一个action.因此,除非您的按钮使用JavaScript进行更改,否则每个表单只会获得一个URI.您是否希望您的网站仅支持JavaScript?
另一个选择是给按钮a name,在这种情况下,你将获得value发布表单的一部分,例如:
<input type="submit" class="submit" name="newsletter" value="Subscribe" />
<input type="submit" class="submit" name="newsletter" value="Unsubscribe />
Run Code Online (Sandbox Code Playgroud)
然后你可以有一个动作来检查值,例如:
public ActionResult Subscribe(string newsletter)
{
if ("subscribe".Equals(newsletter, StringComparison.OrdinalIgnoreCase))
{
//...
Run Code Online (Sandbox Code Playgroud)
因为newsletter是发布表单中的键,MVC会将其值绑定到操作的参数.
| 归档时间: |
|
| 查看次数: |
9475 次 |
| 最近记录: |