gpt4 book ai didi

asp.net-mvc - 如何获取 Ajax.ActionLink 调用操作方法的用户输入?

转载 作者:行者123 更新时间:2023-12-01 13:08:16 27 4
gpt4 key购买 nike

假设我想使用 ajax 操作链接来保存一个字段而无需更改以供查看。

这是我的 View (它是绑定(bind)到类型模型的强类型 View ):

   <%= Html.TextBox("myComment", Model.MyComment)%>
<%= Ajax.ActionLink("SAVE", "SaveComment", "Home",
Model, new AjaxOptions { HttpMethod = "POST"})
%>

这是我在 Controller 中对 ajax 操作链接的操作:

[AcceptVerbs(HttpVerbs.Post)]
public void SaveComment(Model model)
{
MyRepository repository = new MyRepository();
Model mod = repository.GetModel(model.ID);
mod.MyComment = model.MyComment;

try
{
repository.Save();
}
catch(Exception ex)
{
throw ex;
}
}

问题是:我无法在文本框中为 Mycomment in action 方法获取用户输入。无论用户在浏览器中为 Mycomment 输入什么,当单击 Ajax ActionLink SAVE 时,我都会检查 Mycomment 的参数模型的值,MyComment 没有任何变化。

困惑的是:模型应该绑定(bind)到双向 View 。但对于这种情况,似乎不是。然后我将 Ajax.ActionLink 调用更改为:

Ajax.ActionLink("SAVE", "SaveComment", "Home",
new {commentinput =Model.MyComment, new AjaxOptions { HttpMethod = "POST"})

然后将操作方法​​签名更改为:

public void SaveComment(string commentinput)

我仍然无法获取用户输入。

如何在 Controller 操作方法中获取用户输入?

最佳答案

AFAIK Ajax.ActionLink 不允许您轻松获取表单值并使用 AJAX 发布它们。有一些workarounds这看起来很老套(看着最后一段动态调整 URL 让我哭了)。

这是 jQuery 方式(如果与 MS Ajax 相比,我更喜欢它):

<%= Html.TextBox("myComment", Model.MyComment) %>
<%= Html.ActionLink("SAVE", "SaveComment", "Home", new { id = "saveComment" }) %>

然后不引人注意地将点击事件处理程序附加到 anchor :

$(function() {
$('a#saveComment').click(function(evt) {
$.ajax({
url : this.href,
data: {
// Assuming your model has a property called MyComment
myComment: $('#myComment').val()
},
success: function(data, textStatus) {
// Comment saved successfully
}
});
evt.preventDefault();
});
});

关于asp.net-mvc - 如何获取 Ajax.ActionLink 调用操作方法的用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1148384/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com