2017-07-05 3 views
0

文字列の配列に解析し、私はこのテキストからのデータを想定してい ストリングとして格納@ html.TextAreaFor で入力を有する形状を有していますボックスは文字列として格納されますが、私は "/ n"要素の観点から文字列の見た目がどのように新しい行マーカーの区切り文字列になるのだろうと思いますか?html.textareafor - 私はC#MVC(.NET)で午前

我々はテキストボックスに

item1 
    item2 
    item3 

を持っている場合は、I理想的には、私は、テキストボックスのライン・バイ・ライン、各行の文字列は例えばリスト の要素となり解析する必要がフォームを送信すると、指定したモデルにテキストボックスの文字列がロードされ、その文字列を使用してitem1、item2、およびitem3でList(別のモデルのどこか他の場所)をロードします。モデルプロパティから行を抽出するための適切な方法がで区切り文字としてEnvironment.NewLineを使用して文字列のコンテンツを分割され

@model ViewModel 

@Html.TextAreaFor(m => m.TextAreaModel, new { ... }) 

+1

使用 '一覧リスト=新しいリスト(); string [] lines = textareamodel.Split(新しい文字列[] {Environment.NewLine}、StringSplitOptions.RemoveEmptyEntries) '、' foreach(行内の文字列){list.Add(line);}を使用します。 } '。このトリックがうまくいくなら、私は答えとして書くことができます。 –

+0

さて、試してみる –

+0

リスト list = textareamodel.Split(new string [] {Environment.NewLine}、StringSplitOptions.RemoveEmptyEntries).ToList() 'のように1行で行えます。 – mmushtaq

答えて

3

は、あなたがこのようなユーザー入力から文字列を含むTextAreaModelという名前のモデルプロパティにバインドTextAreaForを持っていると仮定します以下の例に示すようにPOSTアクション方法:

[HttpPost] 
public ActionResult SubmitForm(ViewModel model) 
{ 
    // other stuff 

    // parse every textarea lines as list elements 
    List<string> list = model.TextAreaModel.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList(); 

    // assign it to other list property on other model 
    OtherModel.OtherList = list; 

    // other stuff 

    return View(model); 
} 

NB:StringSplitOptions.RemoveEmptyEntriesは、私は、これは、より再だと思う元の文字列に見出される空白行を削除しますStringSplitOptions.Noneを使用するよりも優れています。

デモ:

.NET Fiddle Example - Splitting By Newline

.NET Fiddle Example - MVC Implementation

関連問題:

How to parse user input from a textarea line by line

+0

私は文字列ではなく文字列としてプロパティを格納していることを確認する必要がありました[]またはSplitメソッドは適用されません。私が一度それを変更したら、それは完全に機能しました –

関連する問題