将模型 属性 的值作为 ajax 参数发送
sending value of model property as an ajax parameter
我的查看页面中有以下表格
@using (Html.BeginForm())
{
@Html.EditorFor(model => model.Product_ID)
<input id="idd" type="file" class="file">
// form sumbit button
<input type = "submit" value="Create" />
}
我想发送上面插入的 Product_ID
作为 ajax 对象路由值,然后单击我这样创建的 form.for 的提交按钮 product_ID = Model.Product_ID
但是这个product_ID
获取空值。
$('#idd').click(function () {
$.ajax({
url: '@Url.Action("CreateDirectory", "Home",new { product_ID = Model.Product_ID })',
type: "POST",
控制器
[HttpPost]
public JsonResult CreateDirectory(string product_ID)
{
...........
}
编辑
在上面的脚本中使用警报我试图证明 Product_ID
alert('@Model.Product_ID');
相同的结果未显示值
在这一行中,您将给 product_ID 模型在页面中呈现的初始值,因此它可能为 null
url: '@Url.Action("CreateDirectory", "Home",new { product_ID = Model.Product_ID })'
试试这个
url: '@Url.Action("CreateDirectory", "Home")' + '?product_ID=' + $("Product_ID").val()
编辑
也许你也需要这个
[HttpPost]
public JsonResult CreateDirectory([FromUri]string product_ID)
{
...........
}
因为你的操作只接受 [HttpPost] 数据
并且您在查询字符串 [HttpGet]
中发送变量
@Url.Action("CreateDirectory", "Home",new { product_ID = Model.Product_ID })
url 是下一个:
~/Home/CreateDirectory?product_ID = ....
用 [HttpGet] 替换 [HttpPost] 属性,或者直接删除它
并设置 ajax {类型:"GET"}
或者:
$.ajax({
url: '@Url.Action("CreateDirectory", "Home")',
type: "POST",
data: { product_ID: '@(Model.Product_ID)' }
或:
$.ajax({
url: '@Url.Action("CreateDirectory", "Home")',
type: "POST",
data: { product_ID: $('#Product_ID').val() }
@Url.Action()
是剃须刀代码,它在发送到视图之前在服务器上进行评估,因此如果 Model.Product_ID
的初始值是 null
那么您的代码将只呈现 url: '/Home/CreateDirectory'
。生成文本框后更改值将不会更新 url.
的值
而是使用 ajax data
选项来传递文本框的值
$('#idd').click(function () {
$.ajax({
url: '@Url.Action("CreateDirectory", "Home")', // modify
data: { product_ID: $('#Product_ID').val() }, // add this
type: "POST",
您的代码应该可以正常工作。
@model ProductInfoVM
@using (Html.BeginForm())
{
@Html.EditorFor(model => model.Product_ID)
}
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<input id="idd" type="file" class="file">
<script type="text/javascript">
$(function() {
$('#idd').click(function() {
$.ajax({
url: '@Url.Action("Index", "Home", new {productID = @Model.Product_ID})',
type: "POST"
});
});
})
</script>
假设您有一个接受 productID
的 HttpPost 操作方法
[HttpPost]
public ActionResult Index(string productId)
{
// to do : do something
}
我能想到的唯一原因是 NULL 出现的原因是,您的模型。Product_ID
在您呈现页面时它本身是 NULL。所以我会查看您的 GET 操作方法,看看您是否正确设置了视图模型的 Product_ID
属性 值。
我的查看页面中有以下表格
@using (Html.BeginForm())
{
@Html.EditorFor(model => model.Product_ID)
<input id="idd" type="file" class="file">
// form sumbit button
<input type = "submit" value="Create" />
}
我想发送上面插入的 Product_ID
作为 ajax 对象路由值,然后单击我这样创建的 form.for 的提交按钮 product_ID = Model.Product_ID
但是这个product_ID
获取空值。
$('#idd').click(function () {
$.ajax({
url: '@Url.Action("CreateDirectory", "Home",new { product_ID = Model.Product_ID })',
type: "POST",
控制器
[HttpPost]
public JsonResult CreateDirectory(string product_ID)
{
...........
}
编辑
在上面的脚本中使用警报我试图证明 Product_ID
alert('@Model.Product_ID');
相同的结果未显示值
在这一行中,您将给 product_ID 模型在页面中呈现的初始值,因此它可能为 null
url: '@Url.Action("CreateDirectory", "Home",new { product_ID = Model.Product_ID })'
试试这个
url: '@Url.Action("CreateDirectory", "Home")' + '?product_ID=' + $("Product_ID").val()
编辑 也许你也需要这个
[HttpPost]
public JsonResult CreateDirectory([FromUri]string product_ID)
{
...........
}
因为你的操作只接受 [HttpPost] 数据 并且您在查询字符串 [HttpGet]
中发送变量@Url.Action("CreateDirectory", "Home",new { product_ID = Model.Product_ID })
url 是下一个:
~/Home/CreateDirectory?product_ID = ....
用 [HttpGet] 替换 [HttpPost] 属性,或者直接删除它
并设置 ajax {类型:"GET"}
或者:
$.ajax({
url: '@Url.Action("CreateDirectory", "Home")',
type: "POST",
data: { product_ID: '@(Model.Product_ID)' }
或:
$.ajax({
url: '@Url.Action("CreateDirectory", "Home")',
type: "POST",
data: { product_ID: $('#Product_ID').val() }
@Url.Action()
是剃须刀代码,它在发送到视图之前在服务器上进行评估,因此如果 Model.Product_ID
的初始值是 null
那么您的代码将只呈现 url: '/Home/CreateDirectory'
。生成文本框后更改值将不会更新 url.
而是使用 ajax data
选项来传递文本框的值
$('#idd').click(function () {
$.ajax({
url: '@Url.Action("CreateDirectory", "Home")', // modify
data: { product_ID: $('#Product_ID').val() }, // add this
type: "POST",
您的代码应该可以正常工作。
@model ProductInfoVM
@using (Html.BeginForm())
{
@Html.EditorFor(model => model.Product_ID)
}
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<input id="idd" type="file" class="file">
<script type="text/javascript">
$(function() {
$('#idd').click(function() {
$.ajax({
url: '@Url.Action("Index", "Home", new {productID = @Model.Product_ID})',
type: "POST"
});
});
})
</script>
假设您有一个接受 productID
[HttpPost]
public ActionResult Index(string productId)
{
// to do : do something
}
我能想到的唯一原因是 NULL 出现的原因是,您的模型。Product_ID
在您呈现页面时它本身是 NULL。所以我会查看您的 GET 操作方法,看看您是否正确设置了视图模型的 Product_ID
属性 值。