我希望使用Ajax.i将数据从asp.net MVC View发送到我的控制器。可以从文本框将数据发送到控制器..问题是如何使用Ajax添加URL id以在Controller中发布数据。请参阅以下代码
我的网址
http://localhost:20487/MyController/MyMethod/1
我的剧本
//Save if valid
if (isAllValid) {
var data = {
//project_id: $('#project_id').val().trim(),
project_id= *I want get the ID from Above URL*
title: $('#title').val().trim(),
description : $('#description').val().trim(),
ProjComponentActivities: componentActivities
}
$(this).val('Please wait...');
$.ajax({
url: '/ProjectComponent/SaveComponent',
type: "POST",
data: JSON.stringify(data),
dataType: "JSON",
contentType: "application/json",
success: function (d) {
//check is successfully save to database
if (d.status == true) {
//will send status from server side
alert('Successfully done.');
//clear form
componentActivities = [];
//$('#project_id').val('');
$('#title').val('');
$('#componentActivities').empty();
}
else {
alert('Failed');
}
$('#submit').val('Save');
},
error: function () {
alert('Error. Please try again.');
$('#submit').val('Save');
}
});
}
});
我的方法
[HttpPost]
public JsonResult SaveComponent(OrderVM O)
{
bool status = false;
if (ModelState.IsValid)
{
using (Entities db = new Entities())
{
ProjComponent ProjComponent = new ProjComponent { project_id = O.project_id, title = O.title, description = O.description };
foreach (var i in O.ProjComponentActivities)
{
ProjComponent.ProjComponentActivity.Add(i);
}
db.ProjComponents.Add(ProjComponent);
db.SaveChanges();
status = true;
}
}
else
{
status = false;
}
return new JsonResult { Data = new { status = status } };
}
答案 0 :(得分:0)
你可以尝试
project_id= <%=Url.RequestContext.RouteData.Values["id"]%>
但是请注意,如果您的Js在View中,它才能正常工作。 否则,您可以将其存储在ViewBag或某些javascript对象中......
答案 1 :(得分:0)
如果您只想获取projectId参数,只需将以下代码附加到JavaScript代码中即可:
@Request.RequestContext.RouteData.Values["YOUR PROJECT ID PARAM"]
您将使用URL中的正确参数名称替换参数名称,例如URL路由中配置的ex:id。
另一种方法是使用相同的代码行来填充隐藏字段值,然后在JavaScript方法中直接使用此值