2013-02-19 4 views
0

это мое Get ActionResult:выпадающий список посылает нулевое значение сообщение Action

public ActionResult Add() 
     { 
      ViewData["categoryList"]= _categoryRepository.GetAllCategory(). 
      ToSelectList(c => c.Id, c => c.Name); 

      return View("Add"); 
     } 

эту мою бритву, которые делают categoryList, и у меня нет проблем с этим!

<div> 
     @Html.LabelFor(b => b.Category) 
     @Html.DropDownList("Category", ViewData["categoryList"] as IEnumerable<SelectListItem>) 
     @Html.ValidationMessageFor(b => b.Category) 
    </div> 

, наконец, после отправки страницы, категория выбора отправить через нулевое значение, чтобы опубликовать это действие

 [HttpPost] 
     public ActionResult Add(BlogPost blogPost) 
     { 
      if (ModelState.IsValid) 
      { 
       blogPost.PublishDate = DateTime.Now; 

       _blogPostRepository.AddPost(blogPost); 

       _blogPostRepository.Save(); 
       return RedirectToAction("Add"); 
      } 
      return new HttpNotFoundResult("An Error Accoured while requesting your    order!"); 
     } 

может кто-нибудь сказать мне, почему ??

ответ

1

контроллер

public ActionResult Add() 
{ 
    ViewBag.CategoryList = new SelectList(_categoryRepository.GetAllCategory(), "Id", "Name"); 

    // you dont need the specify View name 
    // like this: return View("Add") 
    // you need to pass your model. 
    return View(new BlogPost()); 
} 

вид

@Html.DropDownListFor(model => model.CategoryId, ViewBag.CategoryList as SelectList, "--- Select Category ---", new { @class = "some_class" }) 

контроллер после действия

[HttpPost] 
public ActionResult Add(BlogPost blogPost) 
{ 
    if (ModelState.IsValid) 
    { 
     blogPost.PublishDate = DateTime.Now; 

     _blogPostRepository.AddPost(blogPost); 

     _blogPostRepository.Save(); 

     // if you want to return "Add" page you should 
     // initialize your viewbag and create model instance again 
     ViewBag.CategoryList = new SelectList(_categoryRepository.GetAllCategory(), "Id", "Name"); 
     return View(new BlogPost()); 
    } 
    return new HttpNotFoundResult("An Error Accoured while requesting your    order!"); 
} 
+0

спасибо за Ваш ответ, но у меня нет никаких проблем с отправкой списка категорий для просмотра, основная проблема заключается в том, что выбранная доза категории не отправляется в действие Post ... –

+0

Потому что вы не связываете ее моделировать. передать его на просмотр недостаточно, вы должны его подгонять к модели. Если вы не хотите использовать мое предложение, вы должны добавить дополнительное свойство для своего postAction следующим образом: 'public ActionResult Add (BlogPost blogPost, строка Category)' –

+0

есть отношения о вашем BlogSpot и списке категорий, поэтому мое предложение лучше путь для строгитипической логики. –

Смежные вопросы