Как вызвать действие 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;
Это должно привести вас туда, куда вы хотите.