Linq to sql 在MVC3和x2B上拆分字符串;剃刀视图

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

我想获得有关如何操作从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>
非常感谢任何帮助和想法。提前谢谢你

更新信息:

谢谢,我开始明白了。我真正想做的是,当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>
}