然后就在地图div上方,我显示了一个文本框和一个搜索按钮.因此,用户键入地址并按下搜索按钮,我将文本框的值发布到[httpPost]索引 *** 作.现在我想将此值传递给[httpGet] Index *** 作,以便它从DB获取该地址的数据,将其发送到Index视图,以便重新绘制地图,并将该特定地址设置为地图的中心,同时显示文本框中的地址.
有关如何做到这一点的任何建议?
我尝试过的方式(并没有用)是调用Index动作的Get版本并使用TempData字典将地址传递给它.但我所看到的只是一个空/空白页面.
以下是我的httpGet Index *** 作的外观:
[httpGet]public async Task<ActionResult> Index(){ // I fetch the info from DB here put it insIDe VIEwBag and call the vIEw return VIEw();}
这会正确加载信息,并在浏览器中第一次点击URL控制器/索引时绘制地图.
文本框和搜索按钮的标记是:
<form ID="searchForm" action="@Url.Action("Index","Default")" method="post"><div > <div > <div > <label for="address" >Search for address</label> <input type="text" ID="address" placeholder="Search for address" name="address"> </div> <div > <input type="submit" value="Search" /> </div> </div></div></form>
最后这里是httpPost Index动作:
[httpPost]public voID Index(String address){ TempData["address"] = address; Index();}
因此,当我提交表单时,我希望它被发布到httpPost Index *** 作,然后它将值传递给它的httpGet版本,最终将从DB获取数据并使用更新的地图获取视图.但我所看到的只是一个空白页面.
有帮助吗?
解决方法 像那样[httpPost]public voID Index(String address){ TempData["address"] = address; RedirectToAction("Index");}
你看它是空白的,因为你正在重定向RedirectToAction(“索引”);并将数据存储在TempData中,并且不在索引Get方法中使用它
[httpGet]public async Task<ActionResult> Index(){ // I fetch the info from DB here put it insIDe VIEwBag and call the vIEw // you must check for the temp data if (!string.IsNullOrWhiteSpace(TempData["address"].ToString())) { VIEwBag["result"] = TempData["address"]; //and use you vIEwbag data in the vIEw } return VIEw();}总结
以上是内存溢出为你收集整理的表单 – ASP.NET MVC – 如何在发布数据后重新加载相同的视图?全部内容,希望文章能够帮你解决表单 – ASP.NET MVC – 如何在发布数据后重新加载相同的视图?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)