Прошу прощения за мои опечатки. Я работаю над доказательством концепции приложения C # ASP.NET MVC, где мне нужно передавать данные между двумя представлениями, когда нет сообщения и получения. Один вид запускает модальный диалог, и мне нужна связь между ними. Мы используем JQuery.
У меня есть представление Charges.cshtml с сеткой данных. Первый столбец таблицы данных может иметь элемент span или элемент link в зависимости от свойства, которое указывает, имеет ли заряд одно или несколько описаний. Вид выглядит следующим образом.
Если платеж имеет несколько описаний, пользователь щелкнет соответствующую ссылку с описанием (в данном случае «Описание 2»), и откроется модальное диалоговое окно с различными описаниями, как показано ниже.
Теперь в этом модальном диалоге пользователь подтвердит/выберет одно описание. Теперь мне нужно закрыть модальное диалоговое окно и обновить описание выбранного заряда, как показано ниже.
Трудная часть здесь заключается в том, как передавать данные между двумя представлениями. Я могу передавать данные через контроллер или через javascript.
Я пробовал различные способы передать выбранный заряд из Charges.cshtml в метод LoadLoanChargeDescriptions в контроллере LoanCharge, например сериализацию json, ViewData, ViewBag, TempData и т. д., но бесполезно. Я могу передавать простые типы данных, такие как int, string, float, но не весь объект. Я чувствую, что мне нужно передать CurrentDescription и Descriptions моему контроллеру, а от них мне нужно перейти к другим частям. Я пытался передать список строк, но не мог понять, как получить к ним доступ в контроллере, так как в моем контроллере я получил 0. Я могу открыть всплывающее окно с несколькими описаниями пользовательского интерфейса (на данный момент просто добавлен текст 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);
}
}
В обзоре.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
Пожалуйста, смотрите мое решение по ссылке ниже.