контроллерПолучить отправил выбранный элемент из DropDownList в ASP MVC
public ActionResult Create()
{
return View(new PageViewModel());
}
[HttpPost]
public ActionResult Create(Page page)
{
try
{
repPage.Add(page);
repPage.Save();
return RedirectToAction("Edit");
}
catch
{
return View(new PageViewModel());
}
}
PageViewModel
public class PageViewModel
{
public Page Page { get; set; }
public List<Template> Templates { get; set; }
private TemplateRepository repTemplates = new TemplateRepository();
public PageViewModel()
{
Page = new Page();
Templates = repTemplates.GetAllTemplates().ToList();
}
}
Части мой взгляд
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Website.Models.PageViewModel>" %>
<%= Html.TextBoxFor(model => model.Page.Name, new { @style = "width:300px;" })%>
<%= Html.DropDownListFor(model => model.Page.Template, new SelectList(Model.Templates, "ID", "Name"), new { @style = "width:306px;" })%>
Шаблон: ID Имя
Страница: ID Имя TemplateID
Мой DropDownList правильно заполняется в представлении, никаких проблем там. Моя проблема в том, что я не получаю выбранное значение из раскрывающегося списка.
В моем контроллере я устанавливаю точку останова в Edit
и вижу, что текстовое поле Name
заполнено значением, которое я вводил в него. Но выбранный из выпадающего списка имеет значение null.
alt text http://www.mgmweb.no/images/debug.jpg
Могу ли я что-то отсутствует, я подумал, что это должно установить правильное Template
значение в Page
объекта. Что я делаю не так?
' int templateID = int.Parse (коллекция ["Страница.Template"]); этот код правильно возвращает идентификатор шаблона, как вы писали. Но возможно ли получить значение из строго типизированного объекта, а не 'FormCollection' и написать« Page.Template »? – Martin