我想获得帮助并指导我如何操作从MS-SQL数据库调用的文本/字符串。所以这是我的SettingController.cs索引查看的部分代码:
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>
粗略地说,我得到了一个视图。现在这就是我想做的事情: 1)Index.cshtml视图中的数据'item.Val'将如下所示:
A,L,C,H
有点像那样。但可能是数据仅包含的行:
H或C或无(空值)
但是如果数据包含多个char,比如说它为K和L设置了,则item.Val中的数据将如下所示:
A,L
哪些数据用逗号分隔。所以现在我想要分割该item.Val数据并对其执行if语句。我想检查item.Val中的每个数据,如果它包含K或L或C或H或全部或不包含任何数据(抱歉,如果我的英语不好)。我希望将其视为,如果所有数据都包含H,那么在表视图中,将是名为Hotel的列,而如果数据也有L,则将显示另一列Lounge,并且会检查检查按钮。
item.Val中可能的char是:
A = Admin
L = Lounge
H = Hotel
C = Customer
任何帮助和想法非常感谢。先谢谢你。
更新信息:
谢谢我开始得到它是什么。我真正想要做的是,当item.Val确实包含H(用于酒店)时,视图将具有带有标题名称Hotel的表列,并且在记录中它将具有勾选复选框。
这是表格视图的示例图片:http://imagebin.org/152941
但是,酒店,管理员和用户信息是否为tick.Val
例如,对于Smith,item.Val数据如下所示:C,
例如,对于Anna,item.Val数据如下所示:H,C,
P.S:var conf
行是测试代码。忽略它,因为我已经从我的源中删除它。 :)
答案 0 :(得分:2)
创建类似于
的ViewModelpublic 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列。如果要执行此操作,可能需要首先检查列表中每个对象中的所有Vals
,以确定需要哪些列。在视图中
@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>
}