Linq to sql 在MVC3和x2B上拆分字符串;剃刀视图
我想获得有关如何操作从MS-SQL数据库调用的文本/字符串的帮助和指南。下面是我的SettingController.cs索引查看部分代码:Linq to sql 在MVC3和x2B上拆分字符串;剃刀视图,linq-to-sql,asp.net-mvc-3,razor,Linq To Sql,Asp.net Mvc 3,Razor,我想获得有关如何操作从MS-SQL数据库调用的文本/字符串的帮助和指南。下面是我的SettingController.cs索引查看部分代码: public ActionResult Index() { var datacontext = new SGM_SIDDataContext(); var dataToView = from m in datacontext.SGMs orderby m.Seq
public ActionResult Index()
{
var datacontext = new SGM_SIDDataContext();
var dataToView = from m in datacontext.SGMs
orderby m.Seq
select m;
return View(dataToView.ToList());
}
这是我的index.cshtml代码:
@model IEnumerable<MVC_Apps.Models.SGM>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
SID
</th>
<th>
Abbrev
</th>
<th>
Val
</th>
<th>
Seq
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.SID)
</td>
<td>
@Html.DisplayFor(modelItem => item.Abbrev)
</td>
<td>
@Html.DisplayFor(modelItem => item.Val)
</td>
<td>
@Html.DisplayFor(modelItem => item.Seq)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.GID })
</td>
</tr>
}
</table>
非常感谢任何帮助和想法。提前谢谢你
更新信息:
谢谢,我开始明白了。我真正想做的是,当item.Val包含H(表示hotel)时,视图将有标题名为hotel的表列,并且在记录处有勾选复选框
这是表格视图的示例图片:
但是,酒店、管理员和用户信息(无论是否勾选)都在item.Val中
例如,对于Smith,item.Val数据如下所示:C,
例如,对于Anna,item.Val数据如下所示:H,C,
注:
var conf
行是一个测试代码。忽略它,因为我已经从源中删除了它。:) 创建一个类似于
public class MyViewModel
{
// items from your model
public int Id{get;get;}
public String Vals{get;set;} // A,L,C,H
...
...
public bool IsHotel
{
get
{
return Vals.Split(',').Contains("H");
}
}
public bool IsAdmin
{
get
{
return Vals.Split(',').Contains("A");
}
}
public bool IsCust
{
get
{
return Vals.Split(',').Contains("C");
}
}
}
在控制器操作中
public ActionResult Index()
{
var datacontext = new SGM_SIDDataContext();
var dataToView = from m in datacontext.SGMs
orderby m.Seq
select new MyViewModel()
{
// items from your datacontext
Id= m.SID,
//etc...
};
var conf = from m in datacontext.SGMs // what's the purpose of this query??
select m.Val;
return View(dataToView.ToList());
}
视图将需要更新,因此包括Hotel、Cust、Admin和任何其他您需要的列。我建议您保持简单,不要试图动态创建HTML列。如果要执行此操作,可能需要首先检查列表中每个对象中的所有VAL
,以确定需要哪些列。在视图中
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.SID)
</td>
<td>
@Html.DisplayFor(modelItem => item.Abbrev)
</td>
<td>
@(item.IsHotel? "Checked" : "")
</td>
<td>
@(item.IsAdmin? "Checked" : "")
</td>
<td>
@(item.IsCust? "Checked" : "")
</td>
<td>
@Html.DisplayFor(modelItem => item.Seq)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.GID })
</td>
</tr>
}
@foreach(模型中的变量项)
{
@DisplayFor(modelItem=>item.SID)
@DisplayFor(modeleItem=>item.Abbrev)
@(item.IsHotel?“勾选”:“
@(item.IsAdmin?“选中”:“”)
@(item.IsCust?“选中”:“”)
@DisplayFor(modeleItem=>item.Seq)
@ActionLink(“编辑”,“编辑”,新的{id=item.GID})
}
非常感谢您的回答。但是我刚刚更新了我的问题,并提供了更多信息,包括链接上的示例表视图(因为我还不能附加图像),但是Ahmad,web应用程序规范需要我根据item.Val列中的值构建动态表。。如果任何记录中没有酒店标准,则不会显示“酒店”列。如果表不是动态的,那么它很简单,您的解决方案也可以工作。但是,在处理动态列时,我遇到了死胡同。叹气*@gunbladeiv-再次阅读我的答案。我确实提到了一种你可以做到这一点的方法。首先需要评估所有项。VAL
是确定所需列的第一个列表。您可能希望查看WebGrid
HtmlHelper,并将其与动态
模型一起使用。对不起。我之前读得太快了。我会尝试一下,我会把这一个完整的代码(成功或没有成功)谢谢艾哈迈德。你帮了我很大的忙,打开了我的算法解决方案。对不起,我的英语不好。
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.SID)
</td>
<td>
@Html.DisplayFor(modelItem => item.Abbrev)
</td>
<td>
@(item.IsHotel? "Checked" : "")
</td>
<td>
@(item.IsAdmin? "Checked" : "")
</td>
<td>
@(item.IsCust? "Checked" : "")
</td>
<td>
@Html.DisplayFor(modelItem => item.Seq)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.GID })
</td>
</tr>
}