我有一个注册表格和一个网格(表格),用于查看所有记录。 但我不知道如何从不同的行动方法显示 我的代码如下所示
@using (Html.BeginForm("Create", "Bathrooms", FormMethod.Post))
{
@Html.LabelFor(model => model.BathRoomDetails)
@Html.TextBoxFor(model => model.BathRoomDetails)
<br/>
@Html.LabelFor(model => model.shortstring)
@Html.TextBoxFor(model => model.shortstring)
<br/>
<button type="submit" class="btn btn-primary"/> Create</button>
<button type="submit"> View All</button>
}
和我的网格代码
<table>
@foreach (var a in ViewBag.data as List<RealEstate.Models.BathRoomVM>)
{
<tr>
<td>@a.BathRoomDetails</td>
<td>@a.BActive</td>
</tr>
}
</table>
和我的控制器
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(BathRoomVM Bathrooms)
{
ModelState.Clear();
var realContext = new RealEstateDBContext();
Bathroom Bathroomobj = new Bathroom();
Bathroomobj.BathRoomDetails = Bathrooms.BathRoomDetails;
Bathroomobj.shortstring = Bathrooms.shortstring;
realContext.Bathrooms.Add(Bathroomobj);
realContext.SaveChanges();
ModelState.Clear();
return View();
}
public ActionResult Get()
{
var realContext = new RealEstateDBContext();
var rslt = (from bathroom in realContext.Bathrooms
select new BathRoomVM { BathRoomDetails = bathroom.BathRoomDetails, BActive = bathroom.BActive, Bcancelled = bathroom.Bcancelled }).Where(m => m.BActive == true && m.Bcancelled == false).ToList();
ViewBag.data = rslt;
return View();
}
我需要在点击ViewAll Button之后加载或显示网格..我已经尝试了不同的方法,但没有一个工作..请帮助我如何实现,我从最近2天陷入这个问题.. 我用了
public ActionResult Create()
{
var realContext = new RealEstateDBContext();
var rslt = (from bathroom in realContext.Bathrooms
select new BathRoomVM { BathRoomDetails = bathroom.BathRoomDetails, BActive = bathroom.BActive, Bcancelled = bathroom.Bcancelled }).Where(m => m.BActive == true && m.Bcancelled == false).ToList();
ViewBag.data = rslt;
return View();
}
我以这种方式获得结果,速度太慢(从数据库中搜索数据需要更多时间)..
[我需要调用其他操作方法并在我的视图中创建列表]
答案 0 :(得分:0)
你真的需要摆脱使用viewbag。这是一个明显的迹象,表示您不习惯使用视图模型。话虽如此,您将需要使用jQuery,视图模型和部分视图。&#39;
以下是各个部分: 1.替换你的表区域是一个div,然后将保存将从局部视图返回的表格。
创建包含表逻辑的部分视图.cshtml文件,并使用也将从部分视图控制器操作返回的视图模型。
您需要在提交按钮上分配一个带有阻止默认操作的click事件,以防止它提交页面,而是调用部分视图控制器操作来更新表区域。
如果我有一些清晰度,我可能会多一点帮助。单击“创建”时,是否要更新表格或仅在单击“查看全部”时更新?
还有其他一些想法。您可以使用jQuery在每次创建时在表中添加新行,然后使用jQuery ajax调用将浴室数据发送到服务器。
另一个可能有用的功能是使用MemoryCache。它实现起来相当容易,但每次添加新浴室时都需要重置它,否则您将无法获得更新列表。
如果您需要具体的信息,请与我联系。