在jquery.get()函数中,第一个参数是URL,是我想要检索的内容的url或者是Controller / action方法。
问题是我正在构建一个asp.net-mvc应用程序,我不知道该传递什么作为此参数。现在我通过了我的partialview.cshtml,但没有回复,也不确定我是做对还是错。
这是我得到的
<div id="editor_box"></div>
<button id="add_button">add</button>
<script>
var inputHtml = null;
var appendInput = function () {
$("#add_button").click(function() {
if (!inputHtml) {
$.get('AddItem.cshtml', function (data) {
inputHtml = data;
$('#editor_box').append(inputHtml);
});
} else {
$('#editor_box').append(inputHtml);
}
})
};
</script>
另外,第二个参数是什么&#34;功能(数据)&#34;这是行动方法吗?
答案 0 :(得分:1)
$.get
的第一个参数是将使用预期数据进行响应的URL。 jQuery / JavaScript并不关心你拥有什么样的服务器端架构或脚本语言。无论URL看起来像文件AddItem.cshtml
还是友好路线(如/User/Sandeep
),就客户端而言都无关紧要。
对于ASP.NET,您的URL端点可以像这样生成:
$.get('@Url.Action("SomeAction", "SomeController")', function (data) {
答案 1 :(得分:1)
您需要从脚本中删除var appendInput = function () {
。您正在定义一个函数但从不调用它。只需使用以下(更新您的操作和控制器)名称
<script>
var inputHtml = null;
$("#add_button").click(function() {
if (!inputHtml) {
$.get('@Url.Action("SomeAction", "SomeController")'', function (data) {
inputHtml = data;
$('#editor_box').append(inputHtml);
});
} else {
$('#editor_box').append(inputHtml);
}
});
</script>
修改强>
根据您的脚本,您似乎只需要一次内容(然后将其缓存并在后续点击中再次添加。另一种方法是将内容最初呈现在隐藏的<div>
元素中,然后在该脚本克隆<div>
的内容并将其附加到DOM
<div id="add style="display:none">@Html.Partial("AddItem")</div>
$("#add_button").click(function() {
$('#editor_box').append($('add').clone());
});