我有这个控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public PartialViewResult SearchData(DataClass dc)
{
//Some logic
return PartialView(data);
}
public ActionResult Search(DataClass dc)
{
//Some logic
return View(dc);
}
[HttpGet]
public ActionResult Info(string edrpou)
{
//Some logic
return View(dc);
}
[HttpPost]
public ActionResult Info(DataClass dc)
{
// ???
return View("Search", dc);
}
}
在视图中Search.cshtml
我有一些形式,如
@Html.TextBoxFor(x => x.Param, new { @class = "form-control", @id = "textBox" })
创建查询字符串并<input type="submit" />
进行确认。然后我从db显示一些信息并创建链接
@Html.ActionLink((string)Model.Rows[i]["NAME"], "Info", "Home", new { edrpou = (string)Model.Rows[i]["EDRPOU"] }, null)
按下后重定向到Info.cshtml
。结果我得到/Home/ResultInfo?edrpou=41057472
页面,其中包含一些信息和表单,例如Search
在Info
参考静止/Home/ResultInfo?edrpou=41057472
中按下确认按钮后,我希望在按下该按钮后使用Search
中的逻辑。
P.S。在PartialViewResult
中触发了Search
,按Info
谢谢你的帮助!
答案 0 :(得分:0)
看起来您需要RedirectToAction
:
[HttpPost]
public ActionResult Info(DataClass dc)
{
// some specific logic, if any
return RedirectToAction("Search");
}
因为你需要移动DataClass对象,你也可以使用TempData
:
[HttpPost]
public ActionResult Info(DataClass dc)
{
// some specific logic, if any
TempData['data'] = dc; //of course 'data' is not a good name, use something more specific
return RedirectToAction("Search");
}
public ActionResult Search(DataClass dc)
{
if (dc == null && TempData.ContainsKey('data'))
dc = (DataClass)TempData['data'];
//Some logic
return View(dc);
}
或者您可以直接拨打Search
,但这并不好,因为它不会将用户重定向到正确的路线:它看起来好像用户仍在“信息”页面上,而实际上他们已经在“搜索”。