Я новичок в MVC, и я пытаюсь создать свой собственный метод расширения, чтобы добавить в html-помощники, доступные в моих бритвенных представлениях. Html.DropDownListFor() позволяет создать раскрывающийся список для любой цели вашей модели. Я хотел бы создать помощник под названием Html.StateDropDownListFor(), который делает то же самое, за исключением того, что он выгружает все 50 штатов США. Таким образом, мне не нужно создавать SelectList для каждого отдельного состояния, которое я создаю. Каков самый простой способ сделать это? Прямо сейчас у меня есть это:
public static class ExtensionMethods
{
public static MvcHtmlString StateDropDownList(this HtmlHelper html)
{
// ???
}
}
Я даже близко? Я не хочу перестроить целостный помощник текстового поля, я просто хочу создать помощника, который использует существующий помощник текстового поля, но для меня выбирает SelectList. Таким образом, в моих представлениях я мог бы просто сделать Html.StateDropDownList(x => x.State)
Ваши ответы очень ценятся.
Здесь ответ!
Ты, ребята, отличная помощь, спасибо! Вот законченный метод расширения в случае, если кто-либо еще использует его.
public static MvcHtmlString StateDropDownListFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
{
Dictionary<string, string> stateList = new Dictionary<string, string>()
{
{"AL"," Alabama"},
{"AK"," Alaska"},
{"AZ"," Arizona"},
{"AR"," Arkansas"},
{"CA"," California"},
{"CO"," Colorado"},
{"CT"," Connecticut"},
{"DE"," Delaware"},
{"FL"," Florida"},
{"GA"," Georgia"},
{"HI"," Hawaii"},
{"ID"," Idaho"},
{"IL"," Illinois"},
{"IN"," Indiana"},
{"IA"," Iowa"},
{"KS"," Kansas"},
{"KY"," Kentucky"},
{"LA"," Louisiana"},
{"ME"," Maine"},
{"MD"," Maryland"},
{"MA"," Massachusetts"},
{"MI"," Michigan"},
{"MN"," Minnesota"},
{"MS"," Mississippi"},
{"MO"," Missouri"},
{"MT"," Montana"},
{"NE"," Nebraska"},
{"NV"," Nevada"},
{"NH"," New Hampshire"},
{"NJ"," New Jersey"},
{"NM"," New Mexico"},
{"NY"," New York"},
{"NC"," North Carolina"},
{"ND"," North Dakota"},
{"OH"," Ohio"},
{"OK"," Oklahoma"},
{"OR"," Oregon"},
{"PA"," Pennsylvania"},
{"RI"," Rhode Island"},
{"SC"," South Carolina"},
{"SD"," South Dakota"},
{"TN"," Tennessee"},
{"TX"," Texas"},
{"UT"," Utah"},
{"VT"," Vermont"},
{"VA"," Virginia"},
{"WA"," Washington"},
{"WV"," West Virginia"},
{"WI"," Wisconsin"},
{"WY"," Wyoming"},
{"AS"," American Samoa"},
{"DC"," District of Columbia"},
{"FM"," Federated States of Micronesia"},
{"MH"," Marshall Islands"},
{"MP"," Northern Mariana Islands"},
{"PW"," Palau"},
{"PR"," Puerto Rico"},
{"VI"," Virgin Islands"},
{"GU"," Guam"}
};
return html.DropDownListFor(expression, new SelectList(stateList, "key", "value"));
}
Я изменил приведенный выше код, чтобы использовать словарь для сокращений состояний.
Просто не забудьте указать System.Web.Mvc.Html в верхней части вашего класса методов расширения, как я забыл, d'oh!