Передайте два параметра в метод контроллера
Мой маршрут по умолчанию
routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional } );
Теперь в контроллере у меня есть метод.
public ActionResult LanguageEdit(int id) {
Соответствующий код в представлении выглядит следующим образом:
<div class="widget-content"> @using (Html.BeginForm("Language", "Country", FormMethod.Post, new { enctype = "multipart/form-data" })) { @Html.HiddenFor(m => m.CountryId) @Html.Grid(Model.Languages).Columns(column => { column.For(m => m.LanguageName).Named("Languages"); column.For(m => String.Format("<a class='btn btn-primary' href='/Country/LanguageEdit/{0}'>Edit</a> <a href='#deleteConfirmModal' role='button' data-toggle='modal' class='btn btn-danger deleteBtn'><input type='hidden' id='countryId' value='{0}'/>Remove</a>", m.CountryId)).Named("Actions").Encode(false); }).Attributes(@class => "table") } </div>
Мы передаем методу id (CountryId).
Однако по какой-то причине я должен передать другой параметр languageId методу контроллера.
Так каков же наилучший способ?
Что я уже пробовал:
пытался этот, но все еще не ясно. Нужна помощь с кодом. В частности, в виде.
F-ES Sitecore
Если это часть модели, используйте тот же код, что и для CountryId. Если это не так, то используйте
@формат HTML.Скрытые("номер", номер)
Прочтите его, используя обычную привязку модели или запрос.Форма["номер"]
Member 12658724
Нужно ли менять маршрут?
F-ES Sitecore
Нет. Маршрут заключается в том, что когда вы хотите получить значения из структуры url-адреса (в отличие от значений строки запроса), вы передаете свои значения в виде полей формы.
Member 12658724
Я борюсь с url-адресом маршрута: "{controller} / {action} / {id}". У него есть только один параметр, но я должен передать два параметра.
F-ES Sitecore
Не нужно менять маршрут, просто добавьте это в форму
@формат HTML.Скрытые("номер", номер)
затем добавить номер парам на ваш язык действий
public ActionResult Language(YourModel model, int? номер)
затем параметр languageId будет заполнен этим скрытым значением. Я предположил, что это int, измените тип по мере необходимости
Member 12658724
Как я уже сказал. Я не уверен, что код в представлении. column.For(m => String.Format("<a class='btn btn-primary' href='/Campaign/LanguageEdit/{0}'>Edit</a> <a href='#deleteConfirmModal' role='button' data-toggle='modal' class='btn btn-danger deleteBtn'><input type='hidden' id='countryId' value='{0}'/>Remove</a>", m.CountryId)).Named("Actions").Encode(false);
Приведенный выше код предназначен для одного параметра. Если я добавлю второй параметр. Я не знаю, как его изменить. Я думаю, что это, скорее всего, так column.For(m => String.Format("<a class='btn btn-primary' href='/Campaign/LanguageEdit/{0}'>Edit</a> <a href='#deleteConfirmModal' role='button' data-toggle='modal' class='btn btn-danger deleteBtn'><input type='hidden' id='countryId' value='{0}'/>Remove</a>", ?m.CountryId&m.LanguageId)).Named("Actions").Encode(false);
Разве я не прав?
F-ES Sitecore
Не думайте, что это сработает, почему бы вам просто не использовать Html?Спрятан? Или если LanguageId является частью модели, то используйте HiddenFor, как и в случае с CountryId.
Member 12658724
И CountryId, и LanguageId являются частью модели. Я просто не знаю, как поместить их в код бритвы. Мне нужен код.
F-ES Sitecore
@формат HTML.HiddenFor(м =&ГТ; м. CountryId)
@формат HTML.HiddenFor(м =&ГТ; м. Номер)
Member 12658724
Не могли бы вы вставить весь код целиком? Извините за невежество. Я хотел бы изменить весь код. Вы можете поместить его в ответ, чтобы я мог пометить его как ответ.
Мой первоначальный код был:
<div class="widget-content"> @using (Html.BeginForm("Language", "Country", FormMethod.Post, new { enctype = "multipart/form-data" })) { @Html.HiddenFor(m => m.CountryId) @Html.Grid(Model.Languages).Columns(column => { column.For(m => m.LanguageName).Named("Languages"); column.For(m => String.Format("<a class='btn btn-primary' href='/Country/LanguageEdit/{0}'>Edit</a> <a href='#deleteConfirmModal' role='button' data-toggle='modal' class='btn btn-danger deleteBtn'><input type='hidden' id='countryId' value='{0}'/>Remove</a>", m.CountryId)).Named("Actions").Encode(false); }).Attributes(@class => "table") } </div>