从mvc4视图调用背景方法

时间:2012-10-22 20:30:51

标签: asp.net-mvc view methods

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

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

2 个答案:

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


}