将参数传递给部分视图C#MVC

时间:2017-11-10 10:49:13

标签: c# asp.net-mvc

我需要将参数传递给局部视图,但我不知道如何。

基本上我的问题是:我需要从不同的视图调用RenameFileAndFolder,然后将用户带到Index控制器页面,但是将路径传递给_fileTable。

控制器:

public ActionResult Index(){...}

public ActionResult _fileTable(string path){...} //partial view

[HttpPost]
public ActionResult RenameFileAndFolder(string path, string newName){...}

查看:

function RenameFileFolder() {
    //(...)
    $.ajax({
        type: "Post",
        url: '@Url.Action("RenameFileAndFolder", "ManageFiles")',
        data: { path: '@(currentPath)', newName: inputName }, 
        dataType: "json",
        traditional: true,
        success: function (data) {
            document.getElementById("inputNewName").value = ""; 
            //Here how can I say: "go to the index page with the path="X" on the partial view"?
            //currently I am doing this but it does not allow me to pass a parameter
            window.location.assign("Index");
    })
}

在视图中调用局部视图:

<div id="tabelaDiv">
    @{
        Html.RenderAction("_fileTable", Model);
    }
</div>

编辑: 我的情况更详细: 因此,我在View beta中使用部分视图omega。然后我转到View alpha并使用ajax查询调用函数RenameFileFolder(),如果成功,我希望能够再次查看Beta并将参数传递给局部视图omega。

2 个答案:

答案 0 :(得分:0)

只需编写此代码即可将参数发送到ActionMethod

<div id="tabelaDiv">        
        @Html.Action("_fileTable",new{path= "your path"} )   
</div>

答案 1 :(得分:0)

您可以尝试将新文件路径存储在Session变量中,然后在视图中访问它。这样可以省去尝试在视图之间传递变量的麻烦。

    [HttpPost]
    public ActionResult RenameFileAndFolder(string path, string newName)
    {
        //code to get new file path

        //set session variable
        Session["path"] = "<filepath>";

        //return your ActionResult;
    }

存储变量后,您可以使用以下命令访问视图中的会话变量:

@Session["path"]

这实际上取决于您希望此数据持续多长时间。此变量将在整个用户的整个会话中保留,因此如果要重置它,则需要明确Session["path"] = null。但是,如果您只希望它持续足够长的时间来呈现单个局部视图,那么最好使用其他方法之一来持久化数据,例如ViewData:

https://www.codeproject.com/Articles/576514/AplusBeginner-splusTutorialplusonplusVariousplus