繁体   English   中英

如何在tempdata mvc4中存储值?

[英]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),请帮帮我。

根据上面的评论,听起来这一系列事件正在发生:

  1. 用户在包含此JavaScript代码的页面上
  2. 用户单击该页面上的链接以转到另一页面
  3. 另一个页面需要根据此JavaScript代码中的值显示数据

如果正确,那么您可以使用许多选项。 明确地说,有什么价值? 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM