Как вызвать действие URL в MVC с помощью функции javascript?

Im пытается отобразить действие url с javascript в проекте MVC. Я фиксирую событие на своей странице, которое вызывает эту функцию, но я не уверен, как вызвать этот определенный URL.

кто-нибудь может мне помочь? :)

function onDropDownChange(e) {
    var url = '/Home/Index/' + e.value;
    //What now...?
}

-----------отредактировано-----------------------

вот мое действие контроллера:

    public ActionResult Index(int? id)
    {
        var tmpToday = DateTime.Now;
        var today = new DateTime(tmpToday.Year, tmpToday.Month, tmpToday.Day, 0, 0, 0);

        if (id != null)
        {
            var num = id.GetValueOrDefault();
            var rentableUnits = new List<Unit>();
            _unitLogic.GetAllRentableUnitsByArea(num, rentableUnits);

            var allAvailabilities = new ShowAvailability[rentableUnits.Count];

            for (int i = 0; i < rentableUnits.Count; i++)
            {
                var sTime = GetFirstDayOfMonth(today);
                var eTime = GetLastDayOfMonth(today);
                allAvailabilities[i] = new ShowAvailability(sTime, eTime.AddHours(23.0).AddMinutes(59.0), rentableUnits);
                today = today.AddMonths(1);
            }

            var showAvailability = new List<ShowAvailability>(allAvailabilities);

            return View(new HomeFormViewModel(showAvailability));
        }
        else
        {
            var allAvailabilities = new ShowAvailability[12];

            for (int i = 0; i < 12; i++)
            {
                var sTime = GetFirstDayOfMonth(today);
                var eTime = GetLastDayOfMonth(today);
                allAvailabilities[i] = new ShowAvailability(sTime, eTime.AddHours(23.0).AddMinutes(59.0));
                today = today.AddMonths(1);
            }

            var showAvailability = new List<ShowAvailability>(allAvailabilities);

            return View(new HomeFormViewModel(showAvailability));
        }
    }
#

Im с помощью расширения Telerik для моего выпадающего списка, который запускает функцию javascript, это на самом деле бритва Вид:

 @(Html.Telerik().DropDownList()
     .Name("DropDownList")
     .Items(area =>
         {
             area.Add().Text("Öll svæði").Value("0").Selected(true);
             foreach (Unit a in Model.Areas)
                {
                     area.Add().Text(a.Name).Value(a.UnitID.ToString());
                }
         })
     .HtmlAttributes(new { style = "width: 130px;" })
     .ClientEvents(clev => clev.OnChange("onDropDownChange"))
     )

вот скрипт:

function onDropDownChange(e) {
    var url = '/Home/Index/' + e.value;
    $.ajax({
            type: "GET",
            url: url,
            data: {},
            dataType: "html"
        });
}

3 ответов


в своем onDropDownChange обработчик, просто сделайте вызов jQuery AJAX, передавая любые данные, которые вам нужно передать до вашего URL. Вы можете обрабатывать успешные и неудачные вызовы с помощью success и error параметры. В success опция, используйте данные, содержащиеся в data аргумент, чтобы сделать все, что вам нужно сделать. Помните, что они асинхронны по умолчанию!

function onDropDownChange(e) {
    var url = '/Home/Index/' + e.value;
    $.ajax({
      url: url,
      data: {}, //parameters go here in object literal form
      type: 'GET',
      datatype: 'json',
      success: function(data) { alert('got here with data'); },
      error: function() { alert('something bad happened'); }
    });
}

документация AJAX jQuery-это здесь.


Я собираюсь дать вам 2 способ, чтобы вызвать действие со стороны клиента

первый

если вы просто хотите перейти к действию, которое вы должны вызвать, просто используйте follow

window.location = "/Home/Index/" + youid

Примечания: что вам нужно для обработки вам типа

второй

Если вам нужно отобразить представление, вы можете сделать вызываемый ajax

//this if you want get the html by get
public ActionResult Foo()
{
    return View(); //this return the render html   
}

и клиент позвонил, как это "предполагая, что вы используете jQuery"

$.get('your controller path', parameters to the controler , function callback)

или

$.ajax({
    type: "GET",
    url: "your controller path",
    data: parameters to the controler
    dataType: "html",
    success: your function
});

или

$('your selector').load('your controller path') 

обновление

в вашем ajax называется сделать это изменение, чтобы передать данные в действие

function onDropDownChange(e) {
var url = '/Home/Index' 
$.ajax({
        type: "GET",
        url: url,
        data: { id = e.value}, <--sending the values to the server
        dataType: "html",
        success : function (data) {
            //put your code here
        }
    });
}

обновление 2

вы не можете сделать это в функции обратного вызова окна.местоположение " если вы хотите, чтобы он отображал вид, вам нужно поставить div на ваш взгляд и сделать что-то подобное

в представлении, где вы находитесь, что есть комбо, в каком-то месте

<div id="theNewView"> </div> <---you're going to load the other view here

в клиенте javascript

$.ajax({
        type: "GET",
        url: url,
        data: { id = e.value}, <--sending the values to the server
        dataType: "html",
        success : function (data) {
            $('div#theNewView').html(data);
        }
    });
}

С этим я думаю, что вы решите свою проблему


попробуй:

var url = '/Home/Index/' + e.value;
 window.location = window.location.host + url; 

Это должно привести вас туда, куда вы хотите.