我想调用将在后台执行某些操作的方法,但我不想更改当前视图。这是方法:
public ActionResult BayesTraining(string s,string path)
{
XmlParse xp = new XmlParse();
using (StreamWriter sw = System.IO.File.AppendText(path))
{
sw.WriteLine("d:/xml/"+xp.stripS(s)+".xml");
sw.Close();
}
return RedirectToAction("Index");
}
如您所见,我目前正在使用RedirectToAction,它只是在方法完成后重新加载页面。考虑到该方法不会影响UI,我不想每次使用它时刷新网页。它的工作应该在后台完成。那么,如何调用它,而无需重定向视图?
答案 0 :(得分:1)
如果你想要一些东西,你可以发射并忘记使用ajax调用。例如,如果您将操作方法更改为
public JsonResult BayesTraining(string s,string path)
{
XmlParse xp = new XmlParse();
using (StreamWriter sw = System.IO.File.AppendText(path))
{
sw.WriteLine("d:/xml/"+xp.stripS(s)+".xml");
sw.Close();
}
return Json("Success");
}
然后在你的视图中通过jQuery绑定到你需要的UI事件,例如绑定到id为BayesTraining的按钮,执行以下操作
$("#BayesTraining").click(function(){
$.post('@Url.Action( "BayesTraining" , "ControllerNameHere" , new { s = "stringcontent", path="//thepath//tothe//xmlfile//here//} )', function(data) {
//swallow success here.
});
}
免责声明:上述代码未经过测试。
希望它能指出你正确的方向。
答案 1 :(得分:0)
如果该方法不影响UI,是否需要返回ActionResult?难道它不能返回虚空吗?
public void BayesTraining(string s,string path)
{
XmlParse xp = new XmlParse();
using (StreamWriter sw = System.IO.File.AppendText(path))
{
sw.WriteLine("d:/xml/"+xp.stripS(s)+".xml");
sw.Close();
}
}