2012-03-15 1 views
1

Я новый пользователь MVC 3, и я пытаюсь разработать веб-сайт электронной коммерции. Когда я создал список продуктов с помощью модели продукта, я не могу поместить логин для частичной страницы, потому что я также использую модель Customer на странице logOnPartial.ASP.NET MVC 3 список продуктов с логином частичной страницы

У него есть ошибки «Элемент модели, переданный в словарь, имеет тип« System.Collections.Generic.List`1 [MvcApplication2.Models.Product] », но для этого словаря требуется элемент модели типа« MvcApplication2.Models » .Клиент''.

Я понимаю, что это значит. Тем не менее, я не знаю, как отображать страницу входа в систему со списком продуктов на странице? Является ли это возможным? Я даю вам код. Что мне делать? Спасибо вам за чтение.

//mac.cshtml page 

@model IEnumerable<MvcApplication2.Models.Product> 

<div id="border_frame"> 
@Html.Partial("_LogOnPartial") 
</div> 

В настоящее время я использую модели клиентов на странице logOnPartial.

//logOnPartial.cshtml page 
@model MvcApplication2.Models.Customer 

@if (Request.IsAuthenticated) 
{ 
<text>Welcome <strong>@User.Identity.Name</strong>! 
[ @Html.ActionLink("Log Off", "LogOff", "Account") ]</text><br /> 
} 
else 
{ 
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

using (Html.BeginForm()) 
{ 
    <div> 
    @Html.LabelFor(m => m.userName) 

    @Html.TextBoxFor(m => m.userName, new { style = "width:150px;" }) 
    @Html.ValidationMessageFor(m => m.userName) 

    @Html.LabelFor(m => m.password) 

    @Html.PasswordFor(m => m.password, new { style = "width:150px;" }) 
    @Html.ValidationMessageFor(m => m.password) 

    @Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.") 
    </div> 
    <input type="submit" class="login_button" value="Log in"/> 
    @Html.ActionLink("Register now", "Register", "Account", null, new { @class = "register_button" }); 

} 

}

ответ

0
@Html.Partial("_LogOnPartial", <You need to pass an instance of Customer here>) 

Вы пытаетесь оказать _LogOnPartial вид, который требует в качестве модели экземпляра Customer. Поскольку вы не передаете какой-либо объект явно (есть переопределение на Partial, которое принимает модель), вся существующая модель передается (IEnumerable<MvcApplication2.Models.Product> ). Это не действительная модель для частичного просмотра, следовательно, ошибка.

Я хотел бы предложить вам изменить модель для просмотра макинтоша от IEnumerable<Product> к новому виду модели классу

class ProductsViewModel 
{ 
    public IEnumerable<Product> Products { get; set; } 
    public Customer Customer { get; set; } 
} 

, а затем вы можете передать клиент на частичный вид

@Html.Partial("_LogOnPartial", Model.Customer) 
+0

Тогда я не могу user_LogonPartial view в списке продуктов? как я могу передать экземпляр клиента? Извините, я новый MVC, тогда вы могли бы объяснить немного больше с некоторыми практиками? – wholee1

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