Ищите помощника Html.SubmitButton, который бы принимал атрибуты класса в MVC3 - PullRequest
13 голосов
/ 20 мая 2011

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

Ответы [ 6 ]

17 голосов
/ 20 мая 2011

Разве это не просто написать

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

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

11 голосов
/ 29 апреля 2015

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

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 голосов
/ 20 мая 2011

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

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

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

2 голосов
/ 05 февраля 2015

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

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

Вы можете создать свой собственный помощник HTML, следуя этой статье 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, но я предпочитаю возвращать HTMLString чем строка

0 голосов
/ 25 ноября 2015

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

Говоря о атрибуте 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 вы просто добавляете этот параметр - он ничего не нарушает - если вы когда-либонужно добавить класс к этой кнопке - добавить его - в одном месте, а не искать все вызовы.

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

0 голосов
/ 28 августа 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...