2013-06-20 7 views
0

Я новичок в MVC, и я пытаюсь добавить частичный вид на главную страницу макета, чтобы я мог показывать сообщения в своем приложении. У меня возникли некоторые проблемы woring это:MVC Частичный вид не рендеринга

Вот мой макет:

<div class="span12">  
<p> 
    @{Html.RenderAction("Messaging", "Messaging");} 
</p> 
@RenderBody() 
</div> 

Это мой контроллер сообщений:

public ActionResult Messaging() 
{ 
    return PartialView(new ViewModels.Messaging() 
     { 
      MessageType = Utilities.MessageType.Success, 
      MessageHeader = "Test", 
      Message = "this is a test message" 
     }); 
} 

Вот мой частичный вид называется _MessagingPartial.cshtml хранится в общая папка:

@model AWS.PL.ViewModels.Messaging 

<span> 
    Model.Message 
</span> 

А вот мой ViewModel:

public class Messaging 
{ 
    public Utilities.MessageType MessageType { get; set; } 
    public string MessageHeader { get; set; } 
    public string Message { get; set; } 
} 

У меня ошибка «Ошибка частичного просмотра сообщений не найдена». Должно ли частичное представление быть названо Messanging.cshtml, или я получаю что-то принципиально неправильное?

Любая помощь очень ценится.

Thanks, Wilky.

+1

Попробуйте @ Model.Message Amit

ответ

3

Вот мой частичный вид называется _MessagingPartial.cshtml

Ваш частичный вид должен называться Messaging.cshtml сог это имя действия контроллера, который вынес это решение.

Если вы хотите сделать пользовательский частичное имя, убедитесь, что вы явно указать, что:

public ActionResult Messaging() 
{ 
    var model = new ViewModels.Messaging 
    { 
     MessageType = Utilities.MessageType.Success, 
     MessageHeader = "Test", 
     Message = "this is a test message" 
    }; 
    return PartialView("_MessagingPartial", model); 
} 

и если парциальное находится в каком-то нестандартном месте можно также указать полный путь к нему:

return PartialView("~/Views/FooBar/Baz/_MessagingPartial.cshtml", model); 
+0

Спасибо , Большая помощь. – Wilky

1

Ваши догадки правильные. Либо частичный вид должен быть назван после вызова действия «Messanging.cshtml» в вашем случае, или вы должны использовать перегрузку явно задать имя вида на View method

protected internal ViewResult View(
    string viewName, 
    Object model 
) 
Смежные вопросы