寻找一个接受MVC3中的类属性的Html.SubmitButton助手

时间:2011-05-20 05:39:29

标签: asp.net-mvc

我想在MVC3中使用帮助器来提交按钮。有这样的东西吗?如果没有,那么有谁知道我可以在哪里得到一些代码。我想要一个允许我传递类属性的。

6 个答案:

答案 0 :(得分:17)

并不简单

<input type="submit" class="myclassname"/>

在MVC中,没有类似控件的东西,它们带有很多应用程序逻辑。事实上,这是可能的,但不推荐。我想说的是,Html助手只是让Html写得更舒服,并帮助你不要编写重复的代码。在您的特定情况下,我认为编写直接html比使用帮助程序更简单。但无论如何,如果你愿意,它都包含在MVC Futures Library中。方法称为SubmitButton

答案 1 :(得分:10)

只需使用以下代码添加到项目类中:

using System.Text;

namespace System.Web.Mvc
{
public static class CustomHtmlHelper
{
    public static MvcHtmlString SubmitButton(this HtmlHelper helper, string buttonText, object htmlAttributes = null)
    {
        StringBuilder html = new StringBuilder();
        html.AppendFormat("<input type = 'submit' value = '{0}' ", buttonText);
        //{ class = btn btn-default, id = create-button }
        var attributes = helper.AttributeEncode(htmlAttributes);
        if (!string.IsNullOrEmpty(attributes))
        {
            attributes = attributes.Trim('{', '}');
            var attrValuePairs = attributes.Split(',');
            foreach (var attrValuePair in attrValuePairs)
            {
                var equalIndex = attrValuePair.IndexOf('=');
                var attrValue = attrValuePair.Split('=');
                html.AppendFormat("{0}='{1}' ", attrValuePair.Substring(0, equalIndex).Trim(), attrValuePair.Substring(equalIndex + 1).Trim());
            }
        }
        html.Append("/>");
        return new MvcHtmlString(html.ToString());
    }
}
}

用法示例:

@Html.SubmitButton("Save", new { @class= "btn btn-default", id="create-button" })

答案 2 :(得分:3)

chk这个链接它告诉你如何创建自定义帮助方法,并且没有内置的提交帮助器......

http://stephenwalther.com/blog/archive/2009/03/03/chapter-6-understanding-html-helpers.aspx

它还包括一个非常基本的提交帮助方法,希望它有帮助

答案 3 :(得分:2)

没有按钮的HTML帮助器,因为HTML帮助器反映了模型的属性,并通过为绑定目的设置正确的属性来帮助您,他们还会查看该属性的VilidationAttribute元数据(如果有)并添加任何jQuery验证属性。

按钮不是模型的一部分,因此没有任何助手。

您可以按照本文http://www.asp.net/mvc/overview/older-versions-1/views/creating-custom-html-helpers-cs或使用TagBuilder类:http://www.asp.net/mvc/overview/older-versions-1/views/using-the-tagbuilder-class-to-build-html-helpers-cs创建自己的HTML帮助器,但我更愿意返回HTMLString而不是字符串

答案 4 :(得分:0)

没有一个,但不应该阻止你自己建立一个。

即使MVC期货项目似乎没有前进或支持,下载源并不难,并抓住提交按钮帮助程序(以及它的支持代码)来推送自己的。

这正是我们为大型MVC 4项目创建SubmitButton帮助程序的基础。

答案 5 :(得分:0)

我是这样做的。

说到HTML 5 <button>属性

创建PartialView - 将其称为_HTML5Button.vbhtml

@ModelType YourProjectName.ButtonViewModel

<button onclick="location.href = '@Model.URL'" class="btn btn-info">@Model.ButtonText</button>

创建一个ButtonViewModel

Public Class ButtonViewModel

Public URL As String
Public ButtonText As String = "Modify Button Text"
'You can add more parameters or do as you please

End Class

然后,当您需要创建它时,请将此部分称为

@Html.Partial("~/Views/Shared/MiniPartialViews/_HTML5Button.vbhtml", New ButtonViewModel With {.URL = "http://www.goanywhere.com", .ButtonText = "Name That Will Appear On The Button"})

这样一来,如果你想在以后添加更多参数 - 那就是为你集中的一个局部视图 - 假设你想稍后添加一个id

嗯,你去偏见,添加一个id =“@ Model.Id”,然后在你的PartialView调用中你只需添加该参数 - 它不会破坏任何东西 - 如果你需要为该按钮添加一个类 - 添加它 - 在一个地方而不是搜索所有的电话。

希望有所帮助 - 它对我来说非常好用!