所以基本上我在MVC应用程序中创建一个Request系统。我有这个"创建请求"我可以在Telerik的DropDownList中选择我想要做的请求类型的部分。我想要做的是,每次从列表中选择某些内容时,都会显示一个部分视图,其中包含与该类型请求相关的表单。
这是我在Create.cshtml视图中的ajax帖子:
<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);
}
每次偶数触发我的dropDownValue字符串为空...为什么?提前致谢! :)
EDIT 查看代码
<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>
答案 0 :(得分:1)
首先:标题显示您正在发布帖子请求,但在您的代码中有一个获取请求。
第二:为了使其工作,您必须更改您要发送的javascript中的数据名称,以匹配c#代码中的参数名称,如:
<script>
function change() {
var value = $("#RequestType").val();
alert(value);
$.ajax({
url: "/Request/CreateRequestForm",
type: "get",
data: { dropDownValue: JSON.stringify(value)}
}).done(function (data) {
$("#partialplaceholder").html(data);
}).fail(function () {
alert('error');
})
};
</script>
或更改c#方法中参数的名称,如:
[HttpGet]
public PartialViewResult CreateRequestForm(string requestValue )
{
...
}
第三:我非常确定你不需要JSON.Stringify()数据。有关Stringify()方法和&amp ;;的更多详细信息。用法请查看this link