Так что в основном я создаю систему Request в приложении MVC. У меня есть этот раздел «Создать запрос», где я могу выбрать тип запроса, который я хочу сделать в DropDownList от Telerik. То, что я хочу сделать, каждый раз, когда я выбираю что-то из списка, появляется частичное представление с формой, связанной с этим типом запроса.Ajax Post в MVC ... Почему строка null?
Это мой Аякс Сообщение от Create.cshtml Вида:
<script>
function change() {
var value = $("#RequestType").val();
alert(value);
$.ajax({
url: "/Request/CreateRequestForm",
type: "get",
data: { requestValue : JSON.stringify(value)}
}).done(function (data) {
$("#partialplaceholder").html(data);
}).fail(function() {
alert('error');
})
};
</script>
Это мой контроллер:
public ActionResult Index()
{
//Things
return View();
}
[HttpGet]
public ActionResult Create()
{
return View();
}
[HttpGet]
public PartialViewResult CreateRequestForm(string dropDownValue)
{ string partialView="";
int RequestType = Convert.ToInt32(dropDownValue);
switch (RequestType)
{
case 1 :
partialView+="_CreateAbsence";
break;
case 2 :
partialView += "_CreateAdditionalHours";
break;
case 3 :
partialView += "_CreateCompensationDay";
break;
case 4 :
partialView += "_CreateErrorCorrection";
break;
case 5 :
partialView += "_CreateVacation";
break;
}
return this.PartialView(partialView);
}
времени Everytime четного запускает мой dropDownValue строка пустая ... Почему? Заранее спасибо! :)
EDIT View Code
<h1>Create New Request</h1>
@(Html.Kendo().DropDownList()
.Name("RequestType")
.DataTextField("Text")
.DataValueField("Value")
.Events(e => e.Change("change"))
.BindTo(new List<SelectListItem>() {
new SelectListItem() {
Text = "Absence",
Value = "1"
},
new SelectListItem() {
Text = "Additional Hours",
Value = "2"
},
new SelectListItem() {
Text = "Compensation Day",
Value = "3"
},
new SelectListItem() {
Text = "Error Correction",
Value = "4"
},
new SelectListItem() {
Text = "Vacation",
Value = "5"
}
})
.Value("1")
)
<script>
function change() {
var value = $("#RequestType").val();
alert(value);
$.ajax({
url: "/Request/CreateRequestForm",
type: "get",
data: { requestValue : JSON.stringify(value)}
}).done(function (data) {
$("#partialplaceholder").html(data);
}).fail(function() {
alert('error');
})
};
</script>
<div id="partialplaceholder">
</div>
Выразить вид кода –
отправку пары имя/значение, которое 'requestValue: someValue' но ваш' CreateRequestForm() 'метод имеет параметр с именем' dropDownValue '(не' requestValue') - измените одно или другое так, чтобы они соответствовали (и его не нужно было строчить значение) –
И поскольку вы явно хотите 'int', тогда параметр должен быть' int requestValue' (а не 'string') –