加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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会将其值绑定到动作的参数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读