主要观点:
使用图标对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>
}
答案 0 :(得分:1)
但您需要在屏幕上的某个元素中呈现收到的数据:
<div id="renderDiv"></div>
[...]
success: function(data){
$("#renderDiv").html(data);
}
您的整个视图位于data
变量中,因此您需要渲染
答案 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"))
成功。