2011-05-12 3 views
1

MS-SQLデータベースから呼び出されるテキスト/文字列をどのように操作できるかについてのヘルプとガイドをご希望です。そこでここでは、インデックス表示のための私のSettingController.cs部分のコードです:MVC3 +カミソリビューの文字列を分割する

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またはNone(NULL値)

のが、データは次のように複数の文字を含む場合には、K及びLに設定されないと言います

A、データはコンマによって分離されているL

:、item.Val内のデータは次のようになります。だから私はそのitem.Valデータを分割し、その上にif文をしたい。私はitem.Valのすべてのデータをチェックしたいところです。それがKかLかCかHか、あるいはそれらのどれかを含んでいても、そうでないものであってもかまいません。そして、私はそれを見てみたい、すべてのデータがテーブルビューでHを含んでいれば、その名前はHotelという列になり、データにもLがある場合、チェックされているチェックボタンでLoungeの別の列が表示される。

item.Valで可能な文字は次のとおりです。

A = Admin 
L = Lounge 
H = Hotel 
C = Customer 

すべてのヘルプやアイデアに感謝します。進んでいただきありがとうございます。

更新情報:イムは、それが何であるかを取得し始め

感謝。私が本当にしたいのは、item.ValにH(ホテル用)が含まれている場合、ビューにはheader name Hotelのテーブル列があり、レコードにはtickチェックボックスが付きます。

これは、テーブルビューのサンプル画像です:それはスミスのために例えばitem.Val であるダニやされていないhttp://imagebin.org/152941

しかし、その後ホテル、管理​​者とユーザー情報のいずれか、item.Valデータは次のようになりこれは:C, はアンナのために例えば、item.Valデータは次のようになります。H,C,

PSを: - var confラインは、テストコードです。既にソースから削除しているので無視してください。:)

答えて

2

コントローラのアクションで

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"); 
    } 
    } 

} 

に類似のViewModelを作成

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()); 
} 

ビューを更新する必要が、そのホテル、カスト、管理者および任意の他のあなたのための列が含まれます必要。私はあなたがそれを単純に保ち、その場で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> 
} 
+0

おかげであなたの答えのためにたくさん。答えは... – GunBladeIV

+0

@gunbladeivを含めて私の質問を更新し、いくつかのより多くの情報を提供します表はitem.Val列の値に依存します。いずれかのレコードにHotel基準がない場合、列Hotelは表示されません。テーブルが動的でない場合は、単純でソリューションが機能します。しかし、動的な列を扱うとき、私は致命的な終わりを打つ。一口* – Ahmad

+0

を更新しかし、その後アフマド、Webアプリケーションの仕様が動的に構築するために私を必要 - しかし、私はちょうど、リンク上のサンプル・テーブル・ビュー(私はまだ画像を添付カントとして) – GunBladeIV