Подтвердить что ты не робот

Поиск помощника Html.SubmitButton, который будет принимать атрибуты класса в MVC3

Я хотел бы использовать помощник для кнопки Submit в MVC3. Есть ли такая вещь? Если нет, то кто-нибудь знает, где я могу получить код для этого. Я бы хотел, чтобы он позволял мне передавать атрибут класса.

4b9b3361

Ответ 1

Не просто написать

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

В MVC нет таких элементов, как элементы управления, которые несут большую логику приложения. На самом деле это возможно, но не рекомендуется. То, что я хочу сказать, заключается в том, что помощники Html просто делают Html-письмо более удобным и не позволяют писать дубликат кода. В вашем конкретном случае, я думаю, что проще написать прямой html, чем с помощью помощника. Но в любом случае, если вы захотите, он содержится в MVC Futures Library. Метод называется SubmitButton

Ответ 2

Просто добавьте к вашему классу проекта такой код:

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" })

Ответ 3

chk эта ссылка указывает, как создать настраиваемый вспомогательный метод, и нет встроенного помощника представления...

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

и он также включает в себя очень простой метод помощника отправки, надеюсь, что он поможет

Ответ 4

Не существует помощника HTML для кнопки, потому что HTML-помощники отражают свойства модели и помогают вам установить правильные атрибуты для целей привязки, а также посмотреть метаданные VilidationAttribute для этого свойства (если есть) и добавить любые атрибуты проверки jQuery.

Кнопки не являются частью модели и поэтому не имеют помощников.

Вы можете создать свой собственный HTML-помощник, следуя этой статье http://www.asp.net/mvc/overview/older-versions-1/views/creating-custom-html-helpers-cs или используя TagBuilder class: http://www.asp.net/mvc/overview/older-versions-1/views/using-the-tagbuilder-class-to-build-html-helpers-cs, но я предпочитаю возвращать HTMLString, чем строка

Ответ 5

Существует не один, но это не должно мешать вам строить его самостоятельно.

Несмотря на то, что проект фьючерсов MVC, похоже, вообще не движется вперед или не поддерживается, не слишком сложно загрузить источник и захватить помощник кнопки "Отправить" (и его поддерживающий код), чтобы свернуть свой.

Именно так мы создали базу нашего помощника SubmitButton для большого проекта MVC 4.

Ответ 6

Вот как я это сделал.

Говоря об атрибуте 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 = "@Model.Id", а затем в своем PartialView Call вы просто добавите этот параметр - он ничего не сломает - если вам когда-нибудь понадобится добавить класс к этой кнопке - добавьте его - в одном месте, а не для поиска всех вызовов.

Надеюсь, что это поможет - он отлично работает для меня!