asp.net-mvc – ASP.NET MVC使用带有Html.BeginForm的两个输入
发布时间:2020-12-16 07:22:23 所属栏目:asp.Net 来源:网络整理
导读:是否有可能有两个输入或按钮控件,在绑定到 Html.BeginForm的同一控制器中触发两个不同的操作? 在以下示例中,我希望Subscribe输入在控制器上调用Subscribe action.这很好用.我希望取消订阅输入来调用我的取消订阅操作.我该如何实现这一目标? TIA. % using (
是否有可能有两个输入或按钮控件,在绑定到
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> <% } %> 更新: 这个问题的更多背景: 我的NewsLetterController有两个订阅订阅和取消订阅,如下所示: public class NewsLetterController : Controller { [HttpPost] public ActionResult Subscribe(NewsletterSubscriber subscriber) { // do something } [HttpPost] public ActionResult Unsubscribe(NewsletterSubscriber subscriber) { // do something } 我希望我可以从同一个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> <% } %> 解决方法
HTML表单元素只有一个操作.因此,除非您的按钮使用JavaScript进行更改,否则每个表单只会获得一个URI.您是否希望您的网站仅支持JavaScript?
另一种选择是给按钮一个名称,在这种情况下,你将获得作为发布表单一部分的值,例如: <input type="submit" class="submit" name="newsletter" value="Subscribe" /> <input type="submit" class="submit" name="newsletter" value="Unsubscribe /> 然后你可以有一个动作来检查值,例如: public ActionResult Subscribe(string newsletter) { if ("subscribe".Equals(newsletter,StringComparison.OrdinalIgnoreCase)) { //... 因为简报是发布形式的关键,MVC会将其值绑定到动作的参数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – Unity无法解析依赖关系
- 在ASP.NET MVC中DRY原理实际上是什么样的?
- asp.net-mvc – 我应该选择云吗?
- asp.net web.config加密解密方法
- asp.net-mvc – 清理用户指定的URL以防止XSS(使用ASP.NET M
- 当我与Fiddler核实时,为什么我的asp.net mvc应用程序现在要
- asp.net-mvc – Dotnetopenauth使用自定义身份提供者单点登
- asp.net – IIS 6.0和.Net 4的Default.aspx?
- asp.net-mvc – ASP.NET MVC中基础控制器类的好候选人是什么
- asp.net-core – 如何在Entity Framework Core中运行存储过