Подтвердить что ты не робот

Как обновить значение модели в JavaScript в представлении Razor?

Я хочу обновить значение модели в JavaScript, как показано ниже, но он не работает.

function updatePostID(val)
{
    @Model.addcomment.PostID = val;
}

в режиме Razor, как показано ниже

foreach(var post in Model.Post)
{
    <br/>
    <b>Posted by :</b> @post.Username <br/>
    <span>@post.Content</span> <br/>
    if(Model.loginuser == Model.username)
    {
        @Html.TextAreaFor(model => model.addcomment.Content)
        <button type="submit" onclick="updatePostID('@post.PostID');">Add Comment </button>
    }
}

Может ли кто-нибудь сказать мне, как назначить значение модели в JavaScript?

4b9b3361

Ответ 1

Это должно работать

function updatePostID(val)
{
    document.getElementById('PostID').value = val;

    //and probably call document.forms[0].submit();
}

Затем у вас есть скрытое поле или другое управление для PostID

@Html.Hidden("PostID", Model.addcomment.PostID)
//OR
@Html.HiddenFor(model => model.addcomment.PostID)

Ответ 2

Модель (@Model) существует только при построении страницы. Когда страница отображается в браузере, все, что существует, это HTML, JavaScript и CSS.

То, что вы хотите сделать, это поместить PostID в скрытое поле. Поскольку значение PostID исправлено, на самом деле JavaScript не нужен. Простой @HtmlHiddenFor будет достаточно.

Однако вы захотите изменить цикл foreach на цикл for. Окончательное решение будет выглядеть примерно так:

for (int i = 0 ; i < Model.Post; i++)
{
    <br/>
    <b>Posted by :</b> @Model.Post[i].Username <br/>
    <span>@Model.Post[i].Content</span> <br/>
    if(Model.loginuser == Model.username)
    {
        @Html.HiddenFor(model => model.Post[i].PostID)
        @Html.TextAreaFor(model => model.addcomment.Content)
        <button type="submit">Add Comment</button>
    }
}

Ответ 3

Вы можете использовать jQuery и вызов Ajax, чтобы отправить специальное обновление обратно на ваш сервер с помощью Javascript.

Он будет выглядеть примерно так:

function updatePostID(val, comment)
{

    var args = {};
    args.PostID = val;
    args.Comment = comment;

    $.ajax({
     type: "POST",
     url: controllerActionMethodUrlHere,
     contentType: "application/json; charset=utf-8",
     data: args,
     dataType: "json",
     success: function(msg) 
     {
        // Something afterwards here

     }
    });

}