2015-11-11 2 views
0

Вызывается два простых метода для создания нового пакета «Создать», и для него вызывается метод редактирования «Редактировать». Этот метод вызывает «GetPackDetail», который получает информацию, связанную с пакетом. Метод редактирования получает информацию о пакете и назначает его модели и открывает страницу «Изменить».Передача модели контроллеру с помощью ActionLink

На странице редактирования просмотра я пытаюсь передать целую модель методу «Создать» контроллера зоны. Он отлично работает, и я получаю всю информацию в этом методе, когда страница «Редактировать вид» открывается в режиме редактирования. Но я получаю null в поле «Имя», когда пользователь нажимает для создания нового пакета, вызывая метод «Создать» в контроллере пакетов, затем введите имя пакета, а затем нажмите на ссылку actionlink, чтобы передать эту модель контроллеру области. похоже, что изменения, внесенные в модель, не отражаются.

обновления Контроллер Отрывок

public ActionResult Create() 
    { 
     iSPYPack model = new iSPYPack(); 

     return View("Edit", model); 
    } 

    public ActionResult Edit(int Id) 
    { 
     var model = GetPackDetail(Id);    

     return View("Edit", model); 
    } 

Edit View

@model iSPYCMS.Models.iSPYPack 

@using (Html.BeginForm()) 
{ 

    @Html.LabelFor(x => x.Name) 
    @Html.TextBoxFor(x => x.Name)             

}   

@Html.ActionLink("Create Area","Create","Area", Model, new { @class="btn btn-success"}) 

iSPYPack Модель

public class iSPYPack 
{   
    public int Id { get; set; } 

    [Required(ErrorMessage = "Pack Name is required")] 
    [Display(Name = "Pack Name")] 
    public string Name { get; set; 
}  

Area Контроллер

public ActionResult Create(iSPYPack Model) 
    { 

     var ispypackMode = Model; 

     iSPYArea model = new iSPYArea(); 

     return View("Create", model); 
    } 
+0

'@ Html.ActionLink ("Создать область", "Создать", "Площадь", модель, новый {@ класс = "БТН БТН-успех"})' проходит первоначальную модель, а не то, что вы отредактировал. –

+0

Как я могу передать отредактированную модель? –

+0

Многие варианты. Используйте javascript для построения URL-адреса на основе текстового поля и используйте 'location.hef = url;' или у вас есть две кнопки отправки, каждая из которых имеет уникальный атрибут 'name', а затем в методе' Edit() 'post, проверьте значение и перенаправление на метод 'Create()' является подходящим. И вы должны быть 'Create (string name)', а не 'Create (iSPYPack Model)' –

ответ

0

Изменение проводки формы кода ниже. Замените имя контроллера. Вместо ссылки на действие вы заметите, что я использовал элемент. Но сохранили для вас свои классы начальной загрузки. Просто сообщите, вы объединили два подхода к публикации. Вы должны использовать тот или иной подход. Дайте мне знать, если вам нужна дополнительная помощь

@model iSPYCMS.Models.iSPYPack 

@using (Html.BeginForm("Create", "ControllerNameOfCreateMethod", FormMethod.Post)) 
{ 

    @Html.LabelFor(x => x.Name) 
    @Html.TextBoxFor(x => x.Name)  

<input type="submit" value="Create New Pack" class="btn btn-success"/>           

}   

Однако, если для ваших нужд вам потребуется ссылка на действие, это поможет.

@Html.ActionLink("Create New Pack", "Create", "ControllerOfCreateMethod", new { area = "Admin", Name = Model.Name }, new { htmlAttributes = new { @class = "btn btn-success" } }) 
Смежные вопросы