C# 返回ASP MVC PartialView时没有布局(Razor)
标题说明了一切,下面是一些代码: 单击按钮调用有问题的部分:C# 返回ASP MVC PartialView时没有布局(Razor),c#,asp.net,asp.net-mvc,razor,partial-views,C#,Asp.net,Asp.net Mvc,Razor,Partial Views,标题说明了一切,下面是一些代码: 单击按钮调用有问题的部分: <div class="red">@ViewData["komunikat"]</div><br /> <p> @if (serwisUser.isAdmin || serwisUser.isUtrzymanie) { <input type="submit" name="btnUtrzymania" id="WybierzUtrzymania"
<div class="red">@ViewData["komunikat"]</div><br />
<p>
@if (serwisUser.isAdmin || serwisUser.isUtrzymanie)
{
<input type="submit" name="btnUtrzymania" id="WybierzUtrzymania" value="Wprowadź nowe warunki dla zaznaczonych utrzymań" />
<input id="txtIlosc" type="text" style="width: 20px; " value="1"/>
<input type="button" name="btnUtrzymania" onclick="javascript:dodajAplikacje();" id="DodajAplikacje" value="Dodaj aplikację do utrzymań" />
}
</p>
这将使用可编辑表单加载部分视图,保存未通过验证的更改后,部分视图将随用户输入一起返回。所以没什么特别的。问题是,若验证失败,返回的部分视图并没有父视图和布局,只返回带有简单表的白色页面
局部视图:
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
@using (Ajax.BeginForm("_DodajAplikacjeDoUtrzymania", "Utrzymania", new AjaxOptions { UpdateTargetId = "listaAplikacji", InsertionMode = InsertionMode.Replace }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Dodaj aplikację do utrzymań</legend>
<div id="ListaUtrzyman" class="t-widget t-grid">
<table id="utrzymania" cellspacing="0">
<thead class="t-grid-header">
<tr>
<th rowspan="2" class="t-header">
Nazwa Aplikacji
</th>
<th colspan="2" class="t-header_rowspan">
Okres obowiązywania nowej umowy
</th>
<th colspan="3" class="t-header_rowspan">
Czas realizacji SLA [w dniach]
</th>
<th rowspan="2" class="t-header">
Komentarz do umowy
</th>
</tr>
<tr>
<th class="t-header_rowspan2">
Rozpoczęcie
</th>
<th class="t-header_rowspan2_last">
Wygaśnięcie
</th>
<th class="t-header_rowspan2">
Krytyczne
</th>
<th class="t-header_rowspan2">
Zwykłe
</th>
<th class="t-header_rowspan2_last">
Zadania
</th>
</tr>
</thead>
@{int i = 0;
}
@foreach (var item in Model)
{
<tr>
<td>
@Html.DropDownList("[" + i + "].aplikacjaID", (List<SelectListItem>)ViewData["listaAplikacji"])
@Html.ValidationMessageFor(m => m[i].aplikacjaID)
@Html.HiddenFor(m => m[i].klientID)
</td>
<td>
@Html.Telerik().DatePickerFor(m => m[i].dataWprowadzenia).ShowButton(true).Format("yyyy-MM-dd").Name("[" + i + "].dataWprowadzenia").HtmlAttributes(new { @id = i + "-dataWprowadzenia" }).Value(DateTime.Now)
@Html.ValidationMessageFor(m => m[i].dataWprowadzenia)
@if (i == 0 && Model.Count > 1)
{ <input type="image" onclick="PowielKrytyczne('dataWprowadzenia'); return false;" alt="Powiel" src="../../Content/images/down arrow.png" style="width: 16px; float: right;" /> }
</td>
<td>
@Html.Telerik().DatePickerFor(m => m[i].dataWygasniecia).ShowButton(true).Format("yyyy-MM-dd").Name("[" + i + "].dataWygasniecia").HtmlAttributes(new { @id = i + "-dataWygasniecia" }).Value(DateTime.Now.AddYears(1))
@Html.ValidationMessageFor(m => m[i].dataWygasniecia)
@if (i == 0 && Model.Count > 1)
{ <input type="image" onclick="PowielKrytyczne('dataWygasniecia'); return false;" alt="Powiel" src="../../Content/images/down arrow.png" style="width: 16px; float: right;" /> }
</td>
@* <td>
@Html.CheckBoxFor(m => m[i].czySLA, new { @id = i + "-czySLA" })
@if (i == 0 && Model.Count > 1)
{ <input type="image" onclick="PowielCheckBox('czySLA'); return false;" alt="Powiel" src="../../Content/images/down arrow.png" style="width: 16px; float: right;" /> }
</td>*@
<td>
@Html.TextBoxFor(m => m[i].czasKrytyczny, new { @style = "width:50px", @id = i + "-czasKrytyczny", @class = "number" })
@Html.ValidationMessageFor(m => m[i].czasKrytyczny)
@if (i == 0 && Model.Count > 1)
{ <input type="image" onclick="PowielKrytyczne('czasKrytyczny'); return false;" alt="Powiel" src="../../Content/images/down arrow.png" style="width: 16px; float: right;" /> }
</td>
<td>
@Html.TextBoxFor(m => m[i].czasNormalny, new { @style = "width:50px", @id = i + "-czasNormalny", @class = "number" })
@Html.ValidationMessageFor(m => m[i].czasNormalny)
@if (i == 0 && Model.Count > 1)
{ <input type="image" onclick="PowielKrytyczne('czasNormalny'); return false;" alt="Powiel" src="../../Content/images/down arrow.png" style="width: 16px; float: right;" /> }
</td>
<td>
@Html.TextBoxFor(m => m[i].czasZadanie, new { @style = "width:50px", @id = i + "-czasZadanie", @class = "number" })
@Html.ValidationMessageFor(m => m[i].czasZadanie)
@if (i == 0 && Model.Count > 1)
{ <input type="image" onclick="PowielKrytyczne('czasZadanie'); return false;" alt="Powiel" src="../../Content/images/down arrow.png" style="width: 16px; float: right;" /> }
</td>
<td>
@Html.TextAreaFor(m => m[i].komentarz, new { @id = i + "-komentarz" })
@if (i == 0 && Model.Count > 1)
{ <input type="image" onclick="PowielKrytyczne('komentarz'); return false;" alt="Powiel" src="../../Content/images/down arrow.png" style="width: 16px; float: right;" /> }
</td>
</tr>
i++;
}
</table>
</div>
<p>
<input type="submit" id="ZapiszZmiany" value="Zapisz" disabled="disabled"/>
<input type="button" id="PowrotDoListy" value="Powrót do listy utrzymań" />
</p>
</fieldset>
}
@使用(Ajax.BeginForm(“\u dodajappilikacjedoutrzymania”,“Utrzymania”,新的AjaxOptions{UpdateTargetId=“listaAplikacji”,InsertionMode=InsertionMode.Replace}))
{
@Html.ValidationSummary(true)
多达吉·阿普利卡奇·多·乌特泽马(Dodaj aplikacjędo utrzymań)
Nazwa Aplikacji
Okres obowiązywania nowej umowy
捷克共和国
科门塔尔兹杜乌莫维酒店
罗兹波奇
威加尼西酒店
Krytyczne
Zwykłe
扎达尼亚
@{int i=0;
}
@foreach(模型中的var项目)
{
@Html.DropDownList(“[”+i+“].aplikacjaID)”,(列表)视图数据[“listaAplikacji”])
@Html.ValidationMessageFor(m=>m[i].aplikacjaID)
@Html.HiddenFor(m=>m[i].klientID)
@Html.Telerik().DatePickerFor(m=>m[i].dataWprowadzenia.ShowButton(true).Format(“yyyyy-MM-dd”).Name(“[“+i+”].dataWprowadzenia”).HtmlAttributes(新的{@id=i+“-dataWprowadzenia”).Value(DateTime.Now)
@Html.ValidationMessageFor(m=>m[i].dataWprowadzenia)
@如果(i==0&&Model.Count>1)
{ }
@Html.Telerik().DatePickerFor(m=>m[i].dataWygasniecia.ShowButton(true).Format(“yyyyy-MM-dd”).Name(“[“+i+”].dataWygasniecia”).HtmlAttributes(new{@id=i+“-dataWygasniecia”).Value(DateTime.Now.AddYears(1))
@Html.ValidationMessageFor(m=>m[i].dataWygasniecia)
@如果(i==0&&Model.Count>1)
{ }
@*
@CheckBoxFor(m=>m[i].czySLA,新的{@id=i+“-czySLA”})
@如果(i==0&&Model.Count>1)
{ }
*@
@Html.TextBoxFor(m=>m[i].czasKrytyczny,新{@style=“width:50px”,@id=i+“-czasKrytyczny”,@class=“number”})
@Html.ValidationMessageFor(m=>m[i].czasKrytyczny)
@如果(i==0&&Model.Count>1)
{ }
@Html.TextBoxFor(m=>m[i].czasNormalny,新{@style=“width:50px”、@id=i+“-czasNormalny”、@class=“number”})
@Html.ValidationMessageFor(m=>m[i].czasNormalny)
@如果(i==0&&Model.Count>1)
{ }
@Html.TextBoxFor(m=>m[i].czasZadanie,新的{@style=“width:50px”、@id=i+“-czasZadanie”、@class=“number”})
@Html.ValidationMessageFor(m=>m[i].czasZadanie)
@如果(i==0&&Model.Count>1)
{ }
@TextAreaFor(m=>m[i].komentarz,新的{@id=i+“-komentarz”})
@如果(i==0&&Model.Count>1)
{ }
i++;
}
}
张贴方法:
[Authorize]
[HttpPost]
public ActionResult _DodajAplikacjeDoUtrzymania(List<aplikacja_UtrzymanieAdd> utrzymanie)
{
serwisLoggedUser serwisUser = (serwisLoggedUser)Session["serwisUser"];
if (serwisUser.isAdmin || serwisUser.isUtrzymanie)
{
ViewData["DodajUtrzymanie"] = @"class = selected";
ViewData["czyWyswietlac"] = @"style = display:none;";
string listaNowychAplikacji = string.Empty;
Guid klientId;
if(Session["klientId"] != null || Session["klientIdListaUtrzyman"] != null)
klientId = (Guid)(Session["klientId"] ?? Session["klientIdListaUtrzyman"]);
else
return PartialView("_404");
ViewData["listaAplikacji"] = listaAplikacji(klientId);
if (ModelState.IsValid)
{
using (serwisCurrendaEntities entites = new serwisCurrendaEntities())
{
foreach (aplikacja_UtrzymanieAdd utrz in utrzymanie)
{
serwis_Utrzymanie noweUtrzymanie = new serwis_Utrzymanie();
noweUtrzymanie.aplikacjaID = utrz.aplikacjaID;
noweUtrzymanie.czasKrytyczny = utrz.czasKrytyczny;
noweUtrzymanie.czasNormalny = utrz.czasNormalny;
noweUtrzymanie.czasZadanie = utrz.czasZadanie;
noweUtrzymanie.czySLA = utrz.czySLA;
noweUtrzymanie.czyUs = false;
if (utrz.dataWprowadzenia == null)
{
noweUtrzymanie.dataWprowadzenia = utrz.dataKoncaUtrzymania.Value;
}
else
{
noweUtrzymanie.dataWprowadzenia = utrz.dataWprowadzenia.Value;
}
noweUtrzymanie.dataWygasniecia = utrz.dataWygasniecia;
noweUtrzymanie.klientID = klientId;
noweUtrzymanie.komentarz = utrz.komentarz;
entites.AddToserwis_Utrzymanie(noweUtrzymanie);
listaNowychAplikacji += noweUtrzymanie.serwis_Aplikacje.nazwaAplikacji + ", ";
TempData["klient"] = entites.serwis_Klienci.Where(k => k.klientID == klientId).FirstOrDefault().nazwa;
TempData["klientID"] = klientId;
Logger.Instance.AddLog("serwisCurrendaAdministrator.Controllers.UtrzymaniaController._DodajAplikacjeDoUtrzymania", Level.Info, String.Format("Użytkownik domenowy {0} dla klienta {1} dodał nowe utrzymanie dla {2}: rozpoczęcie {3}, wygaśnięcie {4}.", User.Identity.Name, TempData["klient"], noweUtrzymanie.serwis_Aplikacje.nazwaAplikacji, noweUtrzymanie.dataWprowadzenia, noweUtrzymanie.dataWygasniecia));
}
entites.SaveChanges();
TempData["Message"] = "Dodano utrzymania!";
return RedirectToAction("ListaUtrzyman", new { klientID = klientId });
}
}
return View("_DodajAplikacjeDoUtrzymania", utrzymanie);
}
return PartialView("_403");
}
[授权]
[HttpPost]
公共行动结果Dodajappikechedoutrzymania(列出utrzymanie)
{
serwisLoggedUser serwisUser=(serwisLoggedUser)会话[“serwisUser”];
if(serwisUser.isAdmin | | serwisUser.isUtrzymanie)
{
ViewData[“DoDAJutrzmanie”]=@“类=选定”;
ViewData[“czyWyswietlac”]=@“样式=显示:无;”;
string listaNowychAplikacji=string.Empty;
Guid-klientId;
如果(会话[“klientId”]!=null | |会话[“klientIdListaUtrzyman”]!=null)
klientId=(Guid)(会话[“klientId”]??会话[“KlientIDListautzyman”);
其他的
返回部分视图(“404”);
ViewData[“listaAplikacji”]=listaAplikacji(klientId);
if(ModelState.IsValid)
{
使用(serwisCurrendaEntities Entities=new serwisCurrendaEntities())
{
foreach(胞内多糖中的胞外多糖和胞外多糖)
{
serwis_utzymanie noweUtrzymanie=新serwis_utzymanie();
noweUtrzymanie.aplikacjaID=utrz.aplikacjaID;
noweUtrzymanie.czasKrytyczny=utrz.c
[Authorize]
[HttpPost]
public ActionResult _DodajAplikacjeDoUtrzymania(List<aplikacja_UtrzymanieAdd> utrzymanie)
{
serwisLoggedUser serwisUser = (serwisLoggedUser)Session["serwisUser"];
if (serwisUser.isAdmin || serwisUser.isUtrzymanie)
{
ViewData["DodajUtrzymanie"] = @"class = selected";
ViewData["czyWyswietlac"] = @"style = display:none;";
string listaNowychAplikacji = string.Empty;
Guid klientId;
if(Session["klientId"] != null || Session["klientIdListaUtrzyman"] != null)
klientId = (Guid)(Session["klientId"] ?? Session["klientIdListaUtrzyman"]);
else
return PartialView("_404");
ViewData["listaAplikacji"] = listaAplikacji(klientId);
if (ModelState.IsValid)
{
using (serwisCurrendaEntities entites = new serwisCurrendaEntities())
{
foreach (aplikacja_UtrzymanieAdd utrz in utrzymanie)
{
serwis_Utrzymanie noweUtrzymanie = new serwis_Utrzymanie();
noweUtrzymanie.aplikacjaID = utrz.aplikacjaID;
noweUtrzymanie.czasKrytyczny = utrz.czasKrytyczny;
noweUtrzymanie.czasNormalny = utrz.czasNormalny;
noweUtrzymanie.czasZadanie = utrz.czasZadanie;
noweUtrzymanie.czySLA = utrz.czySLA;
noweUtrzymanie.czyUs = false;
if (utrz.dataWprowadzenia == null)
{
noweUtrzymanie.dataWprowadzenia = utrz.dataKoncaUtrzymania.Value;
}
else
{
noweUtrzymanie.dataWprowadzenia = utrz.dataWprowadzenia.Value;
}
noweUtrzymanie.dataWygasniecia = utrz.dataWygasniecia;
noweUtrzymanie.klientID = klientId;
noweUtrzymanie.komentarz = utrz.komentarz;
entites.AddToserwis_Utrzymanie(noweUtrzymanie);
listaNowychAplikacji += noweUtrzymanie.serwis_Aplikacje.nazwaAplikacji + ", ";
TempData["klient"] = entites.serwis_Klienci.Where(k => k.klientID == klientId).FirstOrDefault().nazwa;
TempData["klientID"] = klientId;
Logger.Instance.AddLog("serwisCurrendaAdministrator.Controllers.UtrzymaniaController._DodajAplikacjeDoUtrzymania", Level.Info, String.Format("Użytkownik domenowy {0} dla klienta {1} dodał nowe utrzymanie dla {2}: rozpoczęcie {3}, wygaśnięcie {4}.", User.Identity.Name, TempData["klient"], noweUtrzymanie.serwis_Aplikacje.nazwaAplikacji, noweUtrzymanie.dataWprowadzenia, noweUtrzymanie.dataWygasniecia));
}
entites.SaveChanges();
TempData["Message"] = "Dodano utrzymania!";
return RedirectToAction("ListaUtrzyman", new { klientID = klientId });
}
}
return View("_DodajAplikacjeDoUtrzymania", utrzymanie);
}
return PartialView("_403");
}
if (ModelState.IsValid)
{
....
}
return PartialView("_DodajAplikacjeDoUtrzymania", utrzymanie);
@model List<aplikacja_UtrzymanieAdd>
@{
layout = null;
}