我有一个适用于asp.net MVC中的编辑视图的控制器。我有一个动作链接,它将行ID发送给控制器,然后该控制器带回正确的行以在关联的视图中查看。
然后我在下面有一个局部视图。这还需要一个参数,以便从另一个表中获取关联数据。
我有一个Jquery .post调用,该调用在页面加载后运行。我可以发出警报并显示要发送给控制器的确切值。
$(document).ready(function () {
var url = "/Home/MmsAndNotes";
var Uc = $("#Id").serialize();
alert(Uc);
$.post(url, {Id: Uc}, function (data) {
alert("what is Uc now? " + uc); //just for testing
});
})
我也用这种方式。
$(document).ready(function () {
var url = "/Home/MmsAndNotes";
var Uc = $("#Id").val();
alert(Uc);
$.post(url, Uc, function (data) {
});
})
出现警报,并显示我想要的值。但是,.post调用运行时,它将发送一个空值。这是我的控制器。
public ActionResult MmsAndNotes(string Id)
{
//Declare LogisticsVM for individual policy info
LogisticsMMS_NotesVM model;
if(uc == null)
{
return Content("uc is empty.");
}
int val = Convert.ToInt32(uc);
using (Db db = new Db())
{
LogisticsMMS_NotesDTO dto = db.LogisticsMMS.Find(val);
//confirm policy exists
if (dto == null)
{
return Content("This policy cannot be found." + val);
}
model = new LogisticsMMS_NotesVM(dto);
}
return PartialView(model);
}
它总是返回,因为uc为空。我再说一遍,当警报出现时。我得到正确的值发送给控制器。但是一旦发送,就会发生一些事情并将其转换为null。 HELPPPPP ..拜托..我对这个失去了主意。
答案 0 :(得分:0)
我不知道为什么,但是将$ .post()调用更改为$ .ajax({})调用可以解决此问题。如您在上面看到的,我有$ .post呼叫。改用
$.ajax({
type: "POST",
url: "/Home/MmsAndNotes",
dataType: 'text',
data: { Id: Uc }
});
解决了。我认为Jquery的缩短呼叫以相同的方式工作。他们当然可以,但是这样做是它对我有用的唯一方法。
P.S。感谢泰勒(以上)的评论。
答案 1 :(得分:-1)
此解决方案应该可行:
$(document).ready(function () {
$.ajax({
url: '/Home/MmsAndNotes',
type: 'GET',
dataType: "html",
data: { uc : $("#Id").val() },
success: function (result) {
code here
}
});
})
您需要验证$(“#Id”)。val()是否为空