我一直在使用DevExpress PopupControl。它們看起來不錯而漂亮,但它們不會在iOS/Android設備上顯示滾動條。所以我想提出一個替代方案。我的直接用途僅僅是顯示部分視圖,只讀和關閉按鈕。javascript/jquery模態彈出對話框MVC 4 /渲染局部視圖
我不熟悉jquery,所以我很難拼湊出關於這個主題的所有不同的帖子。
我的index.cshtml是一個包含許多不同局部視圖的門戶。部分視圖之一是客戶列表。客戶名稱是指向客戶詳細信息的鏈接。這是我需要彈出對話框的地方。
與客戶名單(注意鏈接調用javascript函數傳遞我想查看ID局部視圖:
<table style="text-align: left;">
@if ((Model != null) && (Model.Items != null))
{
foreach (WebMVC.Models.VisitDetails p in Model.Items)
{
sTime = p.StartTime.ToString("MM/dd") + " " + p.StartTime.ToShortTimeString().PadLeft(8,'_') + " - " + p.EndTime.ToShortTimeString().PadLeft(8,'_');
<tr>
<td style="width: auto">
@Html.DevExpress().HyperLink(
settings =>
{
settings.Name = "indexHyperLinkClient" + p.VisitID.ToString();
settings.Properties.Text = @p.NameNumZone;
settings.Properties.ClientSideEvents.Click =
string.Format("function(s, e) {{ MethodClient('{0}'); }}", p.Account);
}
).GetHtml()
</td>
</tr>
}
}
</table>
在index.cshtml當前的JavaScript處理彈出:
<script type="text/javascript">
var _clientId;
function MethodClient(clientid) {
_clientId = clientid;
popClient.PerformCallback();
popClient.Show();
}
function OnBeginCallbackClient(s, e) {
e.customArgs["clientid"] = _clientId;
}
<script type="text/javascript">
popClient是我想要替換的當前對話框,我希望對話框是一個特定的高度,而不管內容大小如何。
partia要被顯示在對話框中升視圖:
@model WebMVC.Models.ClientDetail
@{
DateTime now = DateTime.Today;
int age = now.Year - Model.Birthdate.Year;
if (Model.Birthdate > now.AddYears(-age))
{
age--;
}
string sBirthdate = Model.Birthdate.ToShortDateString() + " (Age: " + age + ")";
}
<div id="contentDiv">
<span class="display-label">@Html.DisplayNameFor(model => model.NameNumZone):</span>
<span class="display-field">@Html.DisplayFor(model => model.NameNumZone)</span>
<br />
<span class="display-label">@Html.DisplayNameFor(model => model.Sex):</span>
<span class="display-field">@Html.DisplayFor(model => model.Sex)</span>
<br />
<span class="display-label">@Html.DisplayNameFor(model => model.Birthdate):</span>
<span class="display-field">@Html.DisplayFor(model => @sBirthdate)</span>
<br />
<span class="display-label">@Html.DisplayNameFor(model => model.Address):</span>
<span class="display-field">@Html.DisplayFor(model => model.Address)</span>
<br />
</div>
控制器:
public ActionResult Details()
{
string id = "";
if (!string.IsNullOrEmpty(Request.Params["clientid"]))
id = Request.Params["clientid"];
int clientid = 0;
if (id != "")
clientid = Convert.ToInt32(id);
ClientDetail cl;
if (clientid != 0)
ClientDetail cl = GetClientDetails(clientid);
else
ClientDetail cl = new ClientDetail();
return PartialView("ClientPopupPartial", cl);
}
我可以有一個彈出並呈現不同的局部視圖(也許通過加入硬編碼PARAM如區域= 1,面積= 2到方法客戶端調用)?或者應該爲每個細節區域(客戶,訪問,路線...)提供一個彈出窗口。
在擔心多個jQuery模態之前,您是否成功地完成了第一個工作?你已經佈置的兩種情況都是可能的,但單獨的模式將是更容易的情況。重用模式可能需要jQuery ajax調用來加載彈出div。 – Jasen
@Jasen不,我不知道從哪裏開始。我可以重寫當前的JavaScript函數「MethodClient」以支持新的彈出窗口,還是必須使用控制器?我提出了「多種查詢模式」,以便從一開始就能正確設計。 – ginalster