Je souhaite mettre à jour la valeur du modèle en JavaScript comme ci-dessous, mais cela ne fonctionne pas.
function updatePostID(val)
{
@Model.addcomment.PostID = val;
}
en vue rasoir comme indiqué ci-dessous
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>
}
}
Quelqu'un peut-il me dire comment attribuer une valeur de modèle en JavaScript?
Cela devrait marcher
function updatePostID(val)
{
document.getElementById('PostID').value = val;
//and probably call document.forms[0].submit();
}
Ensuite, avoir un champ caché ou un autre contrôle pour le PostID
@Html.Hidden("PostID", Model.addcomment.PostID)
//OR
@Html.HiddenFor(model => model.addcomment.PostID)
Le modèle (@Model
) n'existe que pendant la construction de la page. Une fois la page rendue dans le navigateur, il ne reste plus que HTML, JavaScript et CSS.
Ce que vous voudrez faire, c'est mettre le PostID dans un champ caché. Comme la valeur de PostID est fixe, JavaScript n’est pas nécessaire. Un simple @HtmlHiddenFor
suffira.
Cependant, vous voudrez changer votre boucle foreach en boucle for . La solution finale ressemblera à ceci:
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>
}
}
Vous pouvez utiliser jQuery et un appel Ajax pour publier la mise à jour spécifique sur votre serveur avec Javascript.
Cela ressemblerait à ceci:
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
}
});
}