2015-03-09 3 views
1

Я использую книгу «Pro ASP.NET MVC 5» Адама Фримена, работая над веб-приложением Sports Store, которое он использует. Я попытался повторить этот пример в «Компьютерном магазине», и все работало хорошо до того момента, когда мне нужно было добавить дополнительные функции в корзину («Сводка» частичного представления).Метод действия не найден в контроллере

На странице 'Сводка' PartialView определяется в корзину контроллера:

public PartialViewResult Summary(Cart cart) 
    { 
     return PartialView(cart); 
    } 

Сводка Вид:

@model ComputerStore.Domain.Entities.Cart 

@{ 
ViewBag.Title = "Summary"; 
} 

<div class="navbar-right"> 
    @Html.ActionLink("Checkout", "Index", "Cart", 
     new { returnUrl = Request.Url.PathAndQuery}, 
     new { @class = "btn btn-default navbar-btn"}) 
</div> 

<div class="navbar-text navbar-right"> 
    <b>Your cart:</b> 
    @Model.Lines.Sum(x => x.Quantity) item(s), 
    @Model.CaluclateTotalValue().ToString("c") 
</div> 

И, конечно же, в файле _Layout.cshtml, я вызываю метод действий :

@Html.Action("Summary", "Cart") 

При запуске веб-приложения, я получаю следующее сообщение об ошибке:

-A public action method 'Summary' was not found on controller 'ComputerStore.WebUI.Controllers.CartController'. 

Теперь, прежде чем указывать HttpPost и HttpGet, позвольте мне сообщить вам, что пример Sports Store отлично работает с использованием того же кода, что и выше. Я пробовал множество способов исправить это, и я знаю, что на это ответили несколько раз здесь, но я просто не понимаю, почему это не работает. Более того, все пакеты являются обновлениями.

+0

просто не по теме комментарий, я замечаю ваши пространства имен, которые вы, вероятно, с использованием ваши модели домена в качестве моделей просмотра. На раннем этапе стоит начать использовать модели просмотра, которые не совпадают с моделями вашего домена. – webnoob

+0

@webnoob Я просто следую за книгой. Перед этой частью примера Адам использует пару моделей просмотра для передачи информации. На самом деле есть файл CartIndexViewModel.cs, который передает информацию о Cart в представление из CartController. Возможно, в остальной части главы будут изменения. – Superiom

+0

Ahh Хорошо, я не читал книгу, так извинился. Стоит иметь в виду, если книга не покрывает его, но удачи! – webnoob

ответ

2

Вы, у вас есть параметр для вашего Summary.

Попробуйте вместо этого:

[HttpGet] 
public PartialViewResult Summary() 
{ 
    var cart = new Cart(); 
    //Do something with cart to load the data. 
    return PartialView(cart); 
} 

Если вы хотите передать из параметров в Summary вы могли бы сделать:

@Html.Action("Summary", "Cart", new {cart = someExistingCartObject}) 
Смежные вопросы