c# - PartialView 未在 Asp.net MVC 中显示?
问题描述
我有一个数组,它作为数字(一些标签的 ID),当这个数组传递给控制器操作方法(RawTagCreation)时,我使用 ajax 调用将此数组传递给操作方法,然后这个数组中的数字用于获取来自数据库的数据,然后传递给另一个 ViewModel 对象 ( rawTagVMs
),然后我返回带有这个 ViewModel 对象的部分视图。问题是部分视图没有显示?基本上ajax调用的成功事件也不会被触发。
function selectedValues() {
var datas = [];
$('#search_to option').each(function () {
datas.push($(this).attr('value'));
});
console.log(datas);
if (datas.length > 0) {
$.ajax({
url: "@Url.Action("RawTagCreation", "SourceTagMapping")",
type: 'POST',
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify({ 'selectedTags': datas }),
success: function (data) {
debugger;
$('#myModalContent').html(data);
$('#myModal').modal('show');
}
});
}
else {
alert('Please Select One or More Raw Tags')
}
}
动作方法在这里给出
public ActionResult RawTagCreation(int[] selectedTags)
{
List<RawTagVM> rawTagVMs = new List<RawTagVM>();
if (ModelState.IsValid)
{
foreach (var item in selectedTags)
{
var OldSourecTag = db.Real_Raw_Points.Where(x => x.Source_Tag_Id_Fk == item).FirstOrDefault();
var OPCTag = db.OPC_SourceTags.Where(x => x.Source_Tag_Id == item).FirstOrDefault();
if (OldSourecTag == null)
{
RawTagVM objToInsertRawTags = new RawTagVM();
objToInsertRawTags.Source_Tag_Id_Fk = item;
objToInsertRawTags.R_Tag_Name = "Provide Tag Name";
rawTagVMs.Add(objToInsertRawTags);
}
}
return PartialView("_Update_TagNames", rawTagVMs);
}
return View();
}
部分视图在这里
@model List<OmniConnect.ViewModel.RawTagViews.RawTagVM>
<div class="modal-header">
<h3 class="modal-title" id="exampleModalLabel">Update The Raw Tag Names</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" onclick="Confirm()">Confirm Update</button>
</div>
解决方案
当您尝试 ajax 调用时,您无法返回部分视图
如果要返回视图,则必须使用 Html.Beginform 之类的表单并提交
如果要返回成功方法,则必须返回一个值,可以是字符串并将其附加到标签
public ActionResult RawTagCreation(int[] selectedTags)
{
List<RawTagVM> rawTagVMs = new List<RawTagVM>();
if (ModelState.IsValid)
{
return Json("<div>any view</div");
}
return json("");
}
然后你可以像这样使用:
$.ajax({
url: "@Url.Action("RawTagCreation", "SourceTagMapping")",
type: 'POST',
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify({ 'selectedTags': datas }),
success: function (data) {
debugger;
$('#myModalContent').html(data);
$('#myModal').modal('show');
}
});
推荐阅读
- git - git pull 返回“Already up-to-date”,但分支跟踪显示“local out of date”
- python - Numpy独特的功能
- json - Pandas DataFrame KeyError:1
- bash - bash:使用命令提示符分别运行多个命令
- f# - 包装 sprintf 以在编译时但在运行时不抛出错误?
- cordova - 如何在网络应用程序(离子)中选择音频输出设备?
- python - 从包含一个值的最右侧列中获取值并存储在新列中?
- html - VBA - 从html中提取数据到excel
- php - 我如何用 PHP 编写一个看起来像这样的 JSON 文件(嵌套 JSON 结构)?
- java - 创建了多少对象?