我想知道有人可以帮我吗?我想通过ajax实现的目的是将参数传递给URL,而不是传递给查询字符串,因为我不想公开参数。
所以我有一个包含Index方法的页面:
public ActionResult Index(int qualID)
{
//do stuff with qualID and load up a model
return PartialView("ICTEnrolmentForm", myNewModel);
}
然后(在一个完全独立的页面上),我有以下的ajax块:
<script>
var enrolmentURL = "/enrolment/";
$('.enrolNow').click(function (e) {
var qualID = $(this).attr('data-qual');
$.ajax({
url: enrolmentURL,
type: 'POST',
data: { 'qualID': qualID },
success: function(model)
{
window.location = enrolmentURL;
}
});
});
</script>
如果在ActionResult方法上创建一个断点,我可以看到该方法正在被调用(填充了QualID),但是随后触发了重定向,并且我得到了Null参数错误。
我显然真的很茫然,但是如果有人能指出我的方式的错误,那将不胜感激。
谢谢, C
答案 0 :(得分:0)
如果您使用的是Spring Boot,请将其添加到控制器中:
@RequestMapping(value = "/enrolment/",method = RequestMethod.POST)
public ActionResult Index(@RequestParam(value = "qualID" , required = false) String qualID)
{
//do stuff with qualID and load up a model
return PartialView("ICTEnrolmentForm", myNewModel);
}
答案 1 :(得分:0)
我是否认为这是C#代码而不是Java(如TAG部分所述)?
问题在于,如果您通过HTTP调用控制器方法,则qualID可以为NULL
。但是,qualID的数据类型为Int32,不能为null。因此,您必须将数据类型和方法签名更改为
public ActionResult Index(int? qualID)
现在,允许qualID为NULL
(您必须在使用代码中的变量并抛出适当的错误消息之前进行检查)。此外,检查您定义的路线。
答案 2 :(得分:0)
不确定这是否是答案,但是我已经找到了解决方法,基本上我在另一个方法中进行了ajax发布,该方法填充了模型并将模型放入会话变量中,然后在成功后我将重定向到将会话模型加载到页面上的URL。
URL保持整洁,这是我追求的主要目标。
感谢您的宝贵时间。