ASP.NET MVC 3 списък с продукти с частична страница за влизане

Аз съм нов потребител на MVC 3 и се опитвам да разработя уебсайт за електронна търговия. Когато създадох списък с продукти с помощта на продуктов модел, не мога да поставя частична страница за влизане, защото използвам и модел на клиента в страницата logOnPartial.

Има грешки „Моделният елемент, предаден в речника, е от тип „System.Collections.Generic.List`1[MvcApplication2.Models.Product]“, но този речник изисква моделен елемент от тип „MvcApplication2.Models.Customer“ .

Разбирам какво означава. Не знам обаче как да покажа частична страница за влизане със списък с продукти в страница? Възможно ли е? Давам ви малко моя код. Какво да правя? Благодаря ви за четенето.

//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" });

}

}


person wholee1    schedule 15.03.2012    source източник


Отговори (1)


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

Опитвате се да изобразите _LogOnPartial изглед, който изисква като модел екземпляр на Customer. Тъй като не предавате изрично никакъв обект (има отмяна на Partial, която взема модел), целият съществуващ модел се предава (IEnumerable<MvcApplication2.Models.Product> ). Това не е валиден модел за вашия частичен изглед, оттук и грешката.

Бих предложил да промените модела за изглед на mac от IEnumerable<Product> на нов клас модел на изглед

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

и след това можете да прехвърлите клиента си към частичен изглед

@Html.Partial("_LogOnPartial", Model.Customer)
person Jakub Konecki    schedule 15.03.2012
comment
Тогава не мога да използвам _LogonPartial изглед в списъка с продукти? как мога да предам екземпляр на клиент? Съжалявам, аз съм нов MVC, тогава бихте ли обяснили малко повече с някои практики? - person wholee1; 15.03.2012