c#asp.net mvc - 如何将参数传递给Url.Action

时间:2018-02-01 20:29:00

标签: javascript c# asp.net-mvc

我已经创建了一个基本的天气预报应用。我努力做的是从输入字段中获取城市价值,进入我的脚本。这是我的观点:

因此,如果用户输入城市“伦敦”,脚本代码会将“伦敦”作为参数传递。我怎样才能实现这一目标?我知道我必须使用JavaScript构建URL,但不确定如何使用。

     ViewBag.Title = "WeatherOrNot";
}

<h2>WeatherJS</h2>


<p id="reply"></p>
<p id="temp"></p>
<p id="humidity"></p>
<form>
   City:<br>
    <input id="city" type="text" name="city"><br>

</form>
<button>Get Weather</button>



<script>

    $(document).ready(function () {

        $("button").click(function () {
            $.get("@Url.Action("GetWeather","Home",new {City = "Mumbai" })", function (response) {
                //response
                $("#reply").text(response.name);
                $("#temp").text(response.main.temp);
                $("#humidity").text(response.main.humidity);

                //$("#city").get("city");
                console.log(response);

            });

        });

    });

我对MVC很新,所以如果这很简单就道歉!

由于

3 个答案:

答案 0 :(得分:1)

尝试这项工作

var enteredCity = $('#city')。val();

$.get("@Url.Action("GetWeather","Home")"+"?City="+enteredCity, function (response) {

答案 1 :(得分:1)

@ Url.Action是服务器端,而javascript是客户端。

因此,您无法使用javascript更改服务器端元素(例如@ Url.Action),您必须使用表单。

class SomeModel(...):
    some_field = models.CharField(...)  # pythonic snake_case


class SomeClassSerializer(...):
    class Meta:
        model = SomeModel
        fields = (“SomeField”,)
    SomeField = serializers.CharField(source=“some_field”)  # CamelCase if it needed

答案 2 :(得分:1)

ajax调用通常具有数据属性..您可以使用它来设置查询字符串值。 $ .get(url,data,function)

var city = $('#city').val();
$.get("@Url.Action("GetWeather","Home")", new {City = city}, function (response) {

另一种可能更有意义的方法是使用完整的ajax语法。

var city = $('#city').val();
$.ajax({
    url: "@Url.Action("GetWeather","Home")",
    data: {City: city},
    type: "GET"
}).done(function(response){
    $("#reply").text(response.name);
    $("#temp").text(response.main.temp);
    $("#humidity").text(response.main.humidity);
    //$("#city").get("city");
    console.log(response);
});