asp.net-mvc - Ajax.BeginForm 返回结果并显示适当的数据

标签 asp.net-mvc ajax

我有一个页面如下:

<% using (Ajax.BeginForm("AddAnswer","Marketplace",new AjaxOptions() {HttpMethod = "POST" })){ %>

AddAnswer 操作向数据库添加一些数据。我想要做的是:成功添加答案后,附加 #answers div 将当前答案传递给 Controller ​​。当答案尚未成功添加到数据库时 - 我想在 #errors div 中显示适当的错误。我怎样才能做到这一点?

最佳答案

这是我的建议:

Controller :

[HttpPost]
public ActionResult AddAnswer(string Value)
{
    // TODO: Try to insert the answer value into the database
    // and return a JSON object that contains the attempted value
    // and an error message if necessary
    return Json(new { Answer = Value, ErrorMessage = "" });
}

查看:

<% using (Ajax.BeginForm("AddAnswer", "Home", 
       new AjaxOptions { HttpMethod = "POST", OnSuccess = "success" })) { %>
    <%= Html.TextBoxFor(x => x.Value) %>
    <input type="submit" value="Add answer" />
<% } %>

<div id="errors"></div>
<div id="answers"></div>

<script type="text/javascript">
    function success(arg) {
        var obj = arg.get_response().get_object();
        // I apologize for the ugliness that follows, I don't know MS Ajax
        // but this might written better:
        if (obj.ErrorMessage === '') {
            var answer = document.createElement('div');
            answer.appendChild(document.createTextNode(obj.Answer));
            document.getElementById('answers').appendChild(answer);
        } else {
            document.getElementById('errors').innerHTML = obj.ErrorMessage;
        }
    }
</script>

关于asp.net-mvc - Ajax.BeginForm 返回结果并显示适当的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2686073/

相关文章:

javascript - 从数组中删除项目的更好方法

asp.net-mvc - 使用 Sitecore 在 URL 中强制使用语言前缀

javascript - 如何在MVC的 View 中添加时钟

javascript - FormData 追加数组中的项目

php - Jquery 删除按钮

JavaScript、ajax、表格、颜色

css - 链接图标应该呈现为图像还是带有 css 背景图像 url?

javascript - MVC 6 更改 View block 呈现的位置

googleapis 中的 jquery lib 导致错误 : Invalid value for property: zoom

php - 如何在每 X 分钟内运行我的 php 代码?