0

我想调用将在后台执行某些操作的方法,但我不想更改当前视图。这是方法:

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,我不想每次使用它时都刷新网页。它的工作应该在后台完成。那么,我怎么称呼它,而不需要重定向视图?

4

2 回答 2

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.
   });
}

免责声明:以上代码未经测试。

希望它会为您指明正确的方向。

于 2012-10-22T20:49:44.680 回答
0

如果方法不影响UI,是否需要返回ActionResult?它不能返回 void 吗?

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();
    }


}
于 2012-10-22T20:56:33.190 回答