.NET MVC Razorview表单没有显示使用Ajax

时间:2017-12-21 22:37:18

标签: c# jquery .net ajax asp.net-mvc

主要观点:

使用图标对ApplicationController中的AddAppForm操作进行ajax调用。看起来我的ajax电话是成功的..但仍然没有看到形式......想法?看起来很简单......但是......

...
...
<div id="btn_add_app" class="glyphicon glyphicon-plus btn_add_app" aria-hidden="true" style="color:forestgreen; cursor:pointer"></div>
...
...
$('.btn_add_app').click(function () {
        $.ajax({
            url: '/Application/AddAppForm',
            contentType: 'application/html; charset=utf-8',
            type: 'GET',
            dataType: 'html',
            success: function (result) {
                alert(result);
            }
        });
    });

的ApplicationController: 退回表格......

[HttpGet]
// empty form
public ActionResult AddAppForm()
{
    Application app = new Application();
    app.name = "new name";
    return View(app);
}

查看:

@model Project.Models.Application    

@{ 
    ViewBag.Title = "Add Application";
}

<h2>Add Application</h2>

@using (Html.BeginForm("saveApps", "Application"))
{
    <div>
        <div class="form-group">
            @Html.LabelFor(a => a.name)
            @Html.TextBoxFor(a => a.name)
        </div>

        <div class="form-group">
            @Html.LabelFor(a => a.description)
            @Html.TextBoxFor(a => a.description)
        </div>

        <div class="form-group">
            @Html.LabelFor(a => a.HIM)
            @Html.TextBoxFor(a => a.HIM)
        </div>
        <button type="submit" class="btn btn-primary">Save</button>
    </div>
}

2 个答案:

答案 0 :(得分:1)

您的Ajax调用正在运行

但您需要在屏幕上的某个元素中呈现收到的数据:

<div id="renderDiv"></div>


[...]
success: function(data){
    $("#renderDiv").html(data);
}

您的整个视图位于data变量中,因此您需要渲染

详情请见JQuery .html() Documentation

答案 1 :(得分:0)

尝试改变这一点:

$('.btn_add_app').click(function () {

$('#btn_add_app').click(function () {

.标志表示其呼叫class#表示其呼叫id这是两者之间的差异。

和您的网址:

自:

url: '/Application/AddAppForm',

url: "@Url.Action("AddAppForm", "Application")",

您的视图与您的ajax调用没有任何关系,因为它调用了一个名为saveApps的动作名称@using(Html.BeginForm(&#34; saveApps&#34;,&#34; Application& #34))

并且您的Ajax网址名称为AddAppForm

你必须创建一个像

这样的动作名称
public ActionResult saveApps()
{

    return View();
}

使@using (Html.BeginForm("saveApps", "Application"))成功。