我很抱歉我的错字。我正在开发概念证明 C# ASP.NET MVC 应用程序,当没有 post 和 get 时,我需要在两个视图之间传递数据。一个视图启动一个模态对话框,我需要它们之间的通信。我们正在使用 JQuery。
我有一个带有数据网格的名为 Charges.cshtml 的视图。数据网格的第一列可能有 span 元素或 link 元素,这取决于一个属性,该属性将告诉电荷是具有单个描述还是多个描述。视图如下所示。
如果费用有多个描述,用户将单击相应的描述链接(在这种情况下为 Description2),然后将打开一个模式对话框,显示各种描述,如下所示
现在在此模式对话框中,用户将确认/选择一个描述。现在我需要关闭模式对话框并更新所选费用的描述,如下所示
这里的难点是如何在两个视图之间传递数据。我可以通过控制器或通过 javascript 传递数据。
我尝试了各种方法将 Charges.cshtml 中的选定费用传递给 LoanCharge 控制器中的 LoadLoanChargeDescriptions 方法,例如 json 序列化、ViewData、ViewBag、TempData 等,但没有用。我可以传递简单的数据类型,如 int、string、float 但不能传递整个对象。我觉得我需要将 CurrentDescription 和 Descriptions 传递给我的控制器,并且我需要从它们转移到其他部分。我试图传递字符串列表,但看不到如何在控制器中访问它们,因为我在控制器中计数为 0。我可以打开多个描述 UI 的弹出窗口(现在只添加了 Hello 文本)
请参阅下面的代码片段
费用.cshtml
@model ChargeViewModel
@using (Html.FAFBeginForm())
{
<div>
<table>
<tbody>
<tr >
//.....
<td>
@if(Model.IsMultipleMatch)
{
var loanCharge = Model as ChargeViewModel;
if (loanCharge.IsMultipleMatch == true)
{
//string vm = @Newtonsoft.Json.JsonConvert.SerializeObject(loanCharge);
<span>
<a
onclick="ShowMatchingDescriptions('@Url.Action("LoadLoanChargeDescriptions", "LoanCharge")','', '920','500')">
@loanCharge.Description
</a>
</span>
}
}
else
{
<span>Model.Description</span>
}
</td>
</tr>
</tbody>
</table>
</div>
}
public class ChargeViewModel
{
public string Description {get;set;}
public bool IsMultipleMatch {get;set;}
public List<string> Descriptions {get;set;}
}
public class LoanChargeController
{
public ActionResult LoadLoanChargeDescriptions()
{
// get data here and pass/work on
return View("_PartialMultipleMatchPopup", null);
}
}
在 Review.js 中
function ShowMatchingDescriptions(popUpURL, windowProperties, w, h) {
try {
var left = (screen.width / 2) - (w / 2);
var top = (screen.height / 2) - (h / 2);
var properties = windowProperties + "dialogwidth:" + w + "px;dialogheight:" + h + "px;dialogtop:" + top + "px;dialogleft:" + left + "px;scroll:yes;resizable:no;center:yes;title:Matching Lender’s Fee;";
$.when(
window.showModalDialog(popUpURL, window, properties)
)
.then(function (result) {
var childWindow = result;
});
}
catch (err) {
alert("Error : " + err)
}
}
更新 1
我更新了我的问题并发布了更多详细信息。
提前致谢。
更新 2
请在下面的链接中查看我的解决方案。