[英]how to store values in tempdata mvc4?
我正在尝试将json位置值存储在tempdata中,我正在使用json api获取用户当前位置,我想基于位置向用户显示内容,但我无法执行此操作,因此我正在共享我的代码,伙计们请帮帮我
<script type="text/javascript">
var strip, strcountry, strcity, strregion, strlatitude, strlongitude, strtimezone
function GetUserInfo(data) {
strip = data.host; strcountry = data.countryName; strcity = data.city;
strregion = data.region; strlatitude = data.latitude; strlongitude = data.longitude;
strtimezone = data.timezone;
}
$(function () {
BindUserInfo();
})
function BindUserInfo() {
//document.getElementById('lblCity').innerText = strcity;
$('#term').attr("placeholder", strcity);
$('#term').attr("value", strcity);
}
</script>
<script type="text/javascript" src="http://smart-ip.net/geoip-json?callback=GetUserInfo"></script>
现在我想从这里获取位置并在linq查询中应用,我正在使用MVC 4(Razor),请帮帮我。
根据上面的评论,听起来这一系列事件正在发生:
如果正确,那么您可以使用许多选项。 明确地说,有什么价值? strcity
$('#term').attr("placeholder", strcity);
$('#term').attr("value", strcity);
如果是这样,那么当您在此处设置该值时,也可能会在指向下一页链接的查询字符串中进行设置。 像这样:
$('#someLink').src = '@Url.Action("Index", "Restaurants")?city=' + strcity;
这将混合使用运行前服务器端代码作为链接的根,以及客户端代码以仅将一个值附加到该链接。 然后,控制器方法只接受city
作为参数:
public ActionResult Index(string city)
{
// get your list of restaurants and return the view
}
不需要TempData
,您只需将值直接发送到控制器操作即可。
如果出于某种原因您不想修改src
,则可以改为通过链接调用的形式发送值。 因此,您可能会有类似以下内容的操作,而不是到餐厅控制器上的index操作的ActionLink
:
@using(Html.BeginForm("Index", "Restaurants", FormMethod.Get))
{
<a id="restaurantsLink" href="javascript:void(0);">Go to restaurants</a>
<input type="hidden" name="city" />
}
然后是JavaScript代码:
$('#restaurantsLink').click(function () {
$('form').submit();
});
您可能需要在jQuery选择器中更唯一地标识该表单,特别是如果该页面上存在(或可能存在)其他表单时。 然后,在原始JavaScript代码中,只需在隐藏的输入中设置值即可:
$('input[name=city]').val(strcity);
在第二种情况下,控制器动作仍将与第一个动作相同,接受city
字符串参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.