Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Razor视图中更新JavaScript中的模型值?_Javascript_Asp.net Mvc_Asp.net Mvc 3_Razor - Fatal编程技术网

如何在Razor视图中更新JavaScript中的模型值?

如何在Razor视图中更新JavaScript中的模型值?,javascript,asp.net-mvc,asp.net-mvc-3,razor,Javascript,Asp.net Mvc,Asp.net Mvc 3,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.C

我想更新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>
    }
}
foreach(Model.post中的var post)
{

发帖人:@post.Username
@帖子内容
if(Model.loginuser==Model.username) { @Html.TextAreaFor(model=>model.addcomment.Content) 添加注释 } }
有人能告诉我如何在JavaScript中分配模型值吗?

模型(
@model
)仅在构建页面时存在。在浏览器中呈现页面后,所有存在的内容都是HTML、JavaScript和CSS

您要做的是将posted放在一个隐藏字段中。由于PostID值是固定的,因此实际上不需要JavaScript。一个简单的
@HtmlHiddenFor
就足够了

但是,您需要更改您的。最终的解决方案如下所示:

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>
    }
}
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

     }
    });

}
for(int i=0;i
发帖人:@Model.Post[i]。用户名
@Model.Post[i].内容
if(Model.loginuser==Model.username) { @Html.HiddenFor(model=>model.Post[i].PostID) @Html.TextAreaFor(model=>model.addcomment.Content) 添加注释 } }
这应该行得通

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)

您可以使用jQuery和Ajax调用使用Javascript将特定更新发布回服务器

它看起来像这样:

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>
    }
}
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

     }
    });

}

嗨,Jason,我已经添加了更多的代码进行了修改,这里我们有foreach循环,所以只要点击按钮,就会在javascript中捕获模型值的post id。我认为在这种情况下,html隐藏将不起作用。另外,我正在将模型传递给action方法,因此无法访问“commentPostID”属性,而我想用post id值更新model.addcomment.PostID。这将起作用,只需执行:
Add Comment
如果我在foreach循环中使用隐藏的html扩展名,则生成的html是foreach post文档。getElementById('addcomment\u PostID')).value=val,因此,哪个addcomment_posted将得到更新是关键,并且不起作用。我试着把它放在foreach外面,它成功了。谢谢。你的问题不清楚你想如何访问PostID。如果生成了多个控件,这仍然取决于您希望如何处理它们—作为控件数组或单个控件。如果是后者,那么您将需要使用
Html.Hidden(“PostID_zard”+@post.PostID)
。您可以将其传递给JavaScript函数。但我可以说我完全理解你想做什么。它们不会出现在您的模型中,因为id/名称在帮助我之前是未知的。谢谢分享。