asp.net-mvc - Mvc Html.ActionButton

标签 asp.net-mvc

有人写过吗?我希望它表现得像一个链接,但看起来像一个按钮。带有单个按钮的表单不会这样做,我不想要任何 POST。

最佳答案

最简单的方法是有一个小的form标签 method="get" ,在其中放置一个提交按钮:

<form method="get" action="/myController/myAction/">
    <input type="submit" value="button text goes here" />
</form>

您当然可以编写一个非常简单的扩展方法,它接受按钮文本和 RouteValueDictionary (或带有路由值的匿名类型)并构建表单,因此您不必在任何地方重新执行它。

编辑 :为了回应 cdmckay 的回答,这里有一个使用 TagBuilder 的替代代码类而不是常规 StringBuilder构建表单,主要是为了清楚起见:
using System.Web.Mvc;
using System.Web.Mvc.Html;
using System.Web.Routing;

namespace MvcApplication1
{
    public static class HtmlExtensions
    {
        public static string ActionButton(this HtmlHelper helper, string value, 
                              string action, string controller, object routeValues)
        {
            var a = (new UrlHelper(helper.ViewContext.RequestContext))
                        .Action(action, controller, routeValues);

            var form = new TagBuilder("form");
            form.Attributes.Add("method", "get");
            form.Attributes.Add("action", a);

            var input = new TagBuilder("input");
            input.Attributes.Add("type", "submit");
            input.Attributes.Add("value", value);

            form.InnerHtml = input.ToString(TagRenderMode.SelfClosing);

            return form.ToString(TagRenderMode.Normal);
        }
    }
}

此外,与 cdmckay 的代码相反,这个代码实际上可以编译 ;) 我知道这段代码中可能有很多开销,但我希望你不需要在每个代码上运行它很多次页。如果你这样做了,你可能会做很多优化。

关于asp.net-mvc - Mvc Html.ActionButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/901372/

相关文章:

asp.net - 部分 ASP.NET MVC View 提交

c# - 使用 ASP.Net 5 进行 JwtBearer 身份验证

不等于约束的ASP.NET路由

c# - dropdownlistfor 在 'for' 循环内不发布值

jquery - 通过 jQuery 在 MVC 3 中克隆输入和验证

asp.net - 如何在 Asp.Net MVC 3 中对使用带有子实体的数据模型的类进行单元测试

c# - ASP.Net MVC : A potentially dangerous Request. 从客户端检测到文件值

asp.net-mvc - asp.net mvc Beta1中的模型绑定(bind)

sql-server - 未插入 SQL Server 数据库中的值

asp.net - 登录 ASP.net MVC 的最佳实践?