【发布时间】:2015-06-22 20:34:56
【问题描述】:
我有一个视图,其中包含一个 Google 地图,该地图具有一个国家/地区的默认缩放级别和位置设置。在地图上显示的默认位置来自 DB,我所做的是我有一个 [HttpGet]Index 操作来获取此信息,将其发送到视图,然后在视图中我使用 JS 绘制地图(通常谷歌地图的东西来绘制一个简单的地图)。
然后在地图 div 上方,我显示了一个文本框和一个搜索按钮。因此,用户输入地址并按下搜索按钮,我将文本框的值发布到 [HttpPost]Index 操作。现在我想将此值传递给 [HttpGet]Index 操作,以便它从数据库中获取该地址的数据,将其发送到索引视图,以便使用设置为地图中心的特定地址重绘地图,并且也在文本框中显示地址。
关于如何做到这一点的任何建议?
我尝试过(但没有成功)的方法是调用 Get 版本的 Index 操作并使用 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 class="form" id="searchForm" action="@Url.Action("Index", "Default")" method="post">
<div class="form-group">
<div class="row">
<div class="col-xs-9 col-sm-9 col-md-10">
<label for="address" class="sr-only">Search for address</label>
<input type="text" class="form-control" id="address" placeholder="Search for address" name="address">
</div>
<div class="col-xs-3 col-sm-3 col-md-2">
<input type="submit" class="btn btn-block btn-success" value="Search" />
</div>
</div>
</div>
</form>
最后是 HttpPost Index 操作:
[HttpPost]
public void Index(String address)
{
TempData["address"] = address;
Index();
}
因此,当我提交表单时,我希望它被发布到 HttpPost Index 操作,然后将值传递给它的 HttpGet 版本,该版本最终将从 DB 获取数据并使用更新的地图获取视图。但我看到的只是一个空白页。
有什么帮助吗?
【问题讨论】:
标签: forms asp.net-mvc-5 postback