主要观点:
使用图标对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>
}
但是您需要在屏幕上的某个元素中呈现收到的数据:
<div id="renderDiv"></div>
[...]
success: function(data){
$("#renderDiv").html(data);
}
你的整个视图都在data
变量中,因此你需要渲染
在JQuery .html() Documentation上查看更多信息
试着改变这个:
从
$('.btn_add_app').click(function () {
至
$('#btn_add_app').click(function () {
.
标志意味着它叫class
和#
意味着它叫id
这是两者之间的区别。
和你的网址:
从:
url: '/Application/AddAppForm',
至
url: "@Url.Action("AddAppForm", "Application")",
您的View与您的ajax调用没有任何关系,因为它调用了一个名为saveApps
@using的动作名称(Html.BeginForm(“saveApps”,“Application”))
并且您的Ajax网址名称为AddAppForm
你必须创建一个动作名称
public ActionResult saveApps()
{
return View();
}
让你的@using (Html.BeginForm("saveApps", "Application"))
工作。