我需要将参数传递给局部视图,但我不知道如何。
基本上我的问题是:我需要从不同的视图调用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。
答案 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