所以基本上这就是我的所作所为:
in body - onload方法我称之为javascript函数
function TestN() {
var list = new Array();
var allElements = document.getElementsByTagName('*');
$("*[wordNum]").each(function ()
{
var endRes = {
ControllerName: this.id,
WordNumber: this.getAttribute("wordNum")
};
list.push(endRes);
});
jQuery.ajax({
url:' @Url.Action("Translate")' ,
contentType: "application/json",
dataType: "json",
data: { List : JSON.stringify(list) }
,
traditional: true
})
}
它的作用 - 它使用属性" WrdNum"搜索所有控件。然后我向MVC Translate行动提出ajax请求!
在翻译行动中,我向填写类型列表的网络服务发出请求 - TranslateModel
public ActionResult Translate(string List)
{
List<TranslateModel>listto = WebServiceBea.TranslateList(1, List);
return View(listto);
}
这是我的TranslateModel
public class TranslateModel
{
public string ControllerName { get; set; }
public string WordNumber { get; set; }
public string Description { get; set; }
}
基本上我的问题是 - &gt;我应该返回什么类型的视图 - &gt;以及如何将此列表返回到javascript或jquery函数,该函数必须使用此列表中的记录设置某些html控件的innerHtml属性。**
我现在觉得很奇怪,但那是我的任务
修改
非常感谢你的帮助。但现在我又遇到了另一个问题:
我改变了我的javascript后放了。完成方法所以我可以从服务器获取数据,如下所示:
$(document).ready(function(){ var list = new Array();
$("*[wordNum]").each(function () {
var endRes = {
ControllerName: this.id,
WordNumber: this.getAttribute("wordNum")
};
list.push(endRes);
});
jQuery.ajax({
url: ' @Url.Action("Translate")',
contentType: "application/json",
dataType: "json",
data: { List: JSON.stringify(list) }
, 传统的:是的,
}).done(function (result)
{
alert ("HII") ;
});
});
无论我放入.done函数,它都不会执行。似乎控制器不知道返回结果的位置。 | I |现在不行。可以通过我从.layout页面发出此请求 - 在文档准备就绪上发生的事情发生。小号
答案 0 :(得分:4)
这看起来像是一个使用knockout js的问候地点。 这里有一个很棒的step by step用于在mvc视图中使用knockout
所以该方法只返回json,视图不会只有一个模型只需要调用json
如果您打算使用$ .post来提取数据,则可以将列表作为json返回
[AcceptVerbs(HttpVerbs.Get|HttpVerbs.Post)]
public ActionResult Translate(string List)
{
List<TranslateModel>listto = WebServiceBea.TranslateList(1, modelObj);
return Json(listto);
}
查看您在action方法中发布的内容,它应该已经是该类型的列表。 MVC应该进行繁重的工作并将其转换为您拥有的对象。
如果您想自己处理退货,您可以执行类似
的操作 jQuery.ajax({
url:' @Url.Action("Translate")' ,
contentType: "application/json",
dataType: "json",
data: { List : JSON.stringify(list) },
traditional: true
}).success(function( returnData, returnStatus)
{
//some code to handle the list of objects reutrned
});
答案 1 :(得分:2)
您已经有了答案,但是如果您可能通过javascript调用控制器操作,请考虑以下事项:
public ActionResult GetItems(string id)
{
var MyList = db.GetItems(id);//returns a list of items
if (Request.IsAjaxRequest())//called from javascript via AJAX
{
return Json(MyList, JsonRequestBehavior.AllowGet);
}
else //regular hyperlink click
{
return View(MyList);
}
}
要使用该列表,请执行以下操作
$.ajax({url: "'@Url.Content("~/controllername/GetItems")?id=' + id"})
.done(function(result){
var mylist = result.responseText.evalJSON();//this is your list of items
for(i=0;i<mylist .length;i++)
{
var myitem = mylist[i];
}
});
答案 2 :(得分:0)
NEVERRRR NEVERRR Forge放置jsonRequestBehavior.AllowGet
非常感谢大家的帮助