所以我想做一些几乎与你在这里找到的事情: http://www.makeitspendit.com/calling-asp-mvc-controllers-from-jquery-ajax/
它将完全按照我的意愿行事,但为所有4个按钮写出相同的脚本并不是很干。 (好吧,根本不干)
我希望有一个脚本根据按钮的ID调用正确的视图,这样代码只需要在我的页面上一次。
我尝试将this.id传递给函数调用,并在" url:"中使用连接。 ajax电话的属性,但不起作用。
实施例:
<div id="projectDiv">
<button onclick="loadProject(this.id)" id="_Project1">Project 1</button>
<button onclick="loadProject(this.id)" id="_Project2">Project 2</button>
<script>
function loadProject(projectID) {
$.ajax({
url: ("/Projects/Project/"+projectID),
datatype: "text",
type: "POST",
success: function (data) {
$('#projectDiv').html(data);
},
});
});
</script>
在控制器中:
[HttpPost]
public ActionResult Project(string id)
{
return View(id);
}
我已经为此搜索并发现了类似的东西(但不足以得到我需要的东西)但是找不到这种情况 - 我认为这种情况很常见获得更多信息。
示例代码说明了我希望它如何工作,但我似乎无法将变量传递到url属性中。虽然我不熟悉ASP.NET MVC,但这似乎应该是非常基础的,但我已经坚持了一分钟。
答案 0 :(得分:1)
我知道此帖已经超过一年了,但我想根据对原始问题的评论添加一个更完整的答案,以防其他像我这样的人偶然发现它。
在我的/Views/Shared/
文件夹中,我有_YourPartialName.cshtml
在HomeController.cs
我有:
[HttpPost]
public PartialViewResult AddPartialToView(string id)
{
return PartialView(id);
}
在MainView.cshtml
我有:
...
<div id="placeHolderDiv">
</div>
<div class="form-group">
<button class="btn" type="button" onclick="replaceContentsOfDiv(this.id)" id="_YourPartialName">Add A Partial View Above This</button>
</div>
...
<script>
function replaceContentsOfDiv(partialViewToInsert) {
$.ajax({
url: '@Url.Action("AddPartialToView", "Home")',
data: { id: partialViewToInsert},
type: "POST",
success: function(data) {
$('#placeHolderDiv').html(data);
}
});
}
</script>
这将导致:
<div id="placeHolderDiv">
<whatever class="you had in your partial">
</whatever>
</div>
希望这会有所帮助。