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

在ASP.NET MVC表单上允许多个按钮的最佳方法是什么?

发布时间:2020-12-16 09:29:26 所属栏目:asp.Net 来源:网络整理
导读:我有一种感觉,我对此过于“网状”,但无论如何我都会问.我在ASP.NET MVC项目中有一个表单,它有一些输入字段和两个按钮.一个按钮用于“过滤”其中一个列表框.另一个用于提交表单.我的观点看起来像这样: %using (Html.BeginForm()) {% %=Html.TextBox("SearchI
我有一种感觉,我对此过于“网状”,但无论如何我都会问.我在ASP.NET MVC项目中有一个表单,它有一些输入字段和两个按钮.一个按钮用于“过滤”其中一个列表框.另一个用于提交表单.我的观点看起来像这样:

<%using (Html.BeginForm())
  {%>
   <%=Html.TextBox("SearchItems") %>
   <input type="submit" name="Command" value="Find" />
   <%=Html.ListBox("SelectedItems",new MultiSelectList(model.AvailableItems,"Id","Name",model.SelectedItems))%>
   //Some other form fields.
   <input type="submit" name="Command" value="Send" />
    <%} %>

我的动作看起来像这样:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index([Bind(Prefix = "")]SendMessageRequest model)
    {
        if (model.Command == "Find")
            return SearchItems(model);
        if (model.Command == "Send")
            return Send(model);
        throw new Exception("Invalid command.");
    }

这样做 – 控制器根据单击的按钮选择正确的操作.但是,它并不理想,因为输入按钮的值也是显示的文本.如果我想翻译这个应用程序,那么行动就会破裂.为了解决这个问题,我可以使用< button>元素,允许文本和值不同.但是,这个应用程序是用于Pocket IE,显然Pocket IE处理这些不同 – 它提交Command的两个值,这打破了行动.

因为这是针对Pocket IE的,所以我对JavaScript的处理方式也非常有限. Ajax已经出局,但我可以通过按钮’onClick设置隐藏字段.

所以,我的问题是在MVC视图中允许单个表单有多个按钮的最佳方法是什么?或者,我应该以某种方式将我的观点分解为多种形式吗?

解决方法

我会建议使用2种不同的动作的多种形式.我认为这也更容易测试:

(c => c.Search(),FormMethod.Get);
???{%>

(c => c.Send(),FormMethod.Post);
???{%>
发送

或类似的东西.然后在控制器中你有2个相应的动作.这意味着责任被打破了.使用MVC,您可以拥有多个表单,与Webforms不同.所以你可以挣脱!

(编辑:李大同)

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

    推荐文章
      热点阅读