我尝试将参数传递给简单的操作,该操作返回弹出窗口中的局部视图,但我无法传递参数,就好像它没有到达操作一样。
我不明白为什么???
我使用.net core 2。
这是我的代码。
行动
[HttpPost]
public IActionResult Detail([FromBody] string tableName, [FromBody] string code)
{
var row = tableBLL.GetAllByCode(tableName, code);
return PartialView("~/Views/Table/Detail.cshtml");
}
jquery函数。在我应该从表中恢复之后,值patamenter被硬编码以尝试操作
$("#dt_basic a.details").click(function() {
$.ajax({
method: "POST",
url: "/Table/Detail",
data: JSON.stringify({
"tableName": "IN_COMAGREE",
"code": "1"
}),
//data: '{code: "' + codeId + '" }',
contentType: "application/json",
//dataType: "html",
success: function (response) {
$('#dialog').html(response);
$('#dialog').dialog('open');
},
failure: function (response) {
alert(response.responseText);
},
error: function (response) {
alert(response.responseText);
}
});
});
部分视图(此时非常简单)
<form asp-action="" class="smart-form">
<header>
Name table
</header>
<fieldset>
<section>
<label class="label">Cod</label>
<label class="input">
<input type="text" class="input-xs">
</label>
</section>
<section>
<label class="label">Descr</label>
<label class="input">
<input type="text" class="input-xs">
</label>
</section>
</fieldset>
</form>
对函数的调用点
<table id="dt_basic" class="table table-striped table-bordered table-hover" width="100%">
<thead>
<tr>
@foreach (DataColumn col in Model.Columns)
{
<th>@col.ColumnName</th>
}
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach (DataRow row in Model.Rows)
{
<tr>
@foreach (DataColumn col in Model.Columns)
{
<td>@row[col.ColumnName]</td>
}
<td>
<a href="#" class="details"> Edit @row[0]</a>
<a href="#" class="btn bg-color-red txt-color-white btn-xs"> Delete @row[0]</a>
</td>
</tr>
}
</tbody>
</table>
答案 0 :(得分:0)
每个操作最多只能有一个参数
[FromBody]
。 ASP.NET Core MVC运行时将读取请求流的责任委托给格式化程序。一旦为参数读取了请求流,通常无法再次读取请求流以绑定其他[FromBody]
参数。
您需要创建模型
public class TableData
{
public string tableName { get; set; }
public string code { get; set; }
}
然后在你的动作方法中使用它
public IActionResult Detail([FromBody] TableData table)