Html.Hidden для возникновения ошибки - PullRequest
1 голос
/ 12 марта 2012

Когда я пытаюсь добавить @Html.HiddenFor(@Model.ID) к своему коду, я получаю следующую ошибку при доступе к странице:

Сообщение об ошибке компилятора: CS0411: аргументы типа для метода 'System.Web.Mvc.Html.InputExtensions.HiddenFor (System.Web.Mvc.HtmlHelper, System.Linq.Expressions.Expression>)' не могут быть выведены из использование. Попробуйте указать аргументы типа явно.

Я попытался прочитать MSDN, но документация ужасна (они не предоставляют ни одного примера кода в документации для этого метода.

Вот мой взгляд:

@model CustomerService.Entity.Order
@using CustomerService.Entity
@{
    ViewBag.Title = "OrderDetails";
}
<h2>
    OrderDetails</h2>
@using (Html.BeginForm("HandleSubmit", "Home", FormMethod.Post))
{    
    <table border="1">
        <tr>
            <td>
                <b>Order #</b>
            </td>
            <td>
                @Model.ID
            </td>
        </tr>
        <tr>
            <td>
                <b>Description</b>
            </td>
            <td>
                @Model.Description
            </td>
        </tr>
        <tr>
            <td>
                <b>Salesperson Name</b>
            </td>
            <td>
                @Model.SalespersonName
            </td>
        </tr>
    </table>
    <h3>
        Line Items</h3>

    <input id="btnAddLineItem" type="submit" name="AddLineItem" value="AddLineItem" />

    @Html.HiddenFor(@Model.ID)

    <table border="1">
        <tr>
            <td>
                <b>Line Item ID</b>
            </td>
            <td>
                <b>Description</b>
            </td>
        </tr>
        @for (int i = 0; i < @Model.LineItems.Count; ++i)
        {
            <tr>
                <td>
                    @Model.LineItems[i].ID
                </td>
                <td>
                    @Model.LineItems[i].Description
                </td>
            </tr>
        }</table>
}

Ответы [ 2 ]

6 голосов
/ 12 марта 2012

HiddenFor принимает выражение.

@Html.HiddenFor( model => model.ID )
4 голосов
/ 12 марта 2012

HiddenFor метод должен получить Expression в качестве параметра, а не значение:

@Html.HiddenFor(m => m.ID)

Вместо: @Html.HiddenFor(@Model.ID)

Подпись метода:

HiddenFor<TModel, TProperty>(HtmlHelper<TModel>,
                             Expression<Func<TModel, TProperty>>) 

В простом тексте вы должны указать Expression, который получает «экземпляр» типа вашей модели (в данном случае CustomerService.Entity.Order) и возвращает желаемое свойство (в данном случае ID)

* 1018 MSDN *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...