2017-11-10 23 views
-1

にHTML選択コントロールからの投稿リストのデータは、私は自分のアカウント名とが、彼らは、アカウント名のリストを提出したユーザーが入力でき、私のサイトのフォームに取り組んでいます。ASP .NETのコアMVC - MVCコントローラ

以下はその(任意の臭いコードを無視してください、私はそれをソートします)フォーム内で私のHTMLです。

<div class="form-group"> 
     <label asp-for="Accounts" class="control-label site-font">Accounts<b style="color: red">*</b></label> 
     <select id="account-list" name="accounts[]" multiple="multiple" class="form-control" asp-for="Accounts"></select> 
     <div style="margin-top: 1%"></div> 

     <input type="text" id="account-name" placeholder="Enter your Account Name" class="form-control" asp-for="Accounts" /> 
     <div style="margin-top: 1%"></div> 
     <select id="platform-list" class="form-control"> 
      <option>Xbox</option> 
      <option>PS4</option> 
      <option>PC</option> 
     </select> 
     <div style="margin-top: 1%"></div> 
     <select id="software-list" class="form-control"> 
      <option>Microsoft Account</option> 
      <option>Playstation Network</option> 
      <option>Uplay</option> 
      <option>Steam</option> 
      <option>Discord</option> 
      <option>None of the above</option> 
     </select> 
     <div style="margin-top: 1%"></div> 
     <input type="checkbox" id="main-account"/> Main Account 
     <div style="margin-top: 1%"></div> 
     <input type="button" class="submit-button" value="Add Account" id="add" /> 
     <span id="account-error" asp-validation-for="Accounts" class="text-danger"></span> 
    </div> 

私の問題は、サブミットをクリックするたびに無効なキャスト例外が発生するということです。

My Controllerは、Accountsプロパティが文字列のリストであるメンバーの型をとります。以下は

は、彼らが自分のアカウントのいくつか追加したときにユーザが表示され、各行は、リスト内の項目がどうなるかです。

enter image description here

私はこの作業を取得するためにJavaScriptを使用しているが、私は、これは問題に影響を持っているとは思わないので、私は質問ではなく、あなたが見たい場合は、それを含めていませんそれから私に知らせてください。私が何かを見逃している、または質問が不明である場合

その後、私が知っていると私はできるだけ早くそれに戻って取得しようとしてください。

+0

あなたはこれを見ていましたか? https://stackoverflow.com/questions/1255472/how-does-a-multiple-select-list-work-with-model-binding-in-asp-net-mvc – hardkoded

+0

これをすばやくスキャンしたので、私は間違っていますが、これは私がコントローラからビューにデータを送ってそれを送り返したいと思うでしょうか?代わりに私がやっているのは、実際にはビュー内のリストを作成してコントローラに送信することです。 – Brendon

+0

まず、モデルとそのビューを生成したGETメソッドを表示します。生成したビューは正しくバインドできませんでした。 –

答えて

0

次のようにフォームが何かに掲載されているので、あなたがエラーを取得している理由は次のとおりです。

"アカウント[]" = "SelectedOption1"

"アカウント[]" = "SelectedOption2"

"アカウント[]" = "SelectedOption3"

....

私はこれを回避する最も簡単な方法は、「ACCを作ることであろうと思いますounts "プロパティは文字列の配列/リストです。あなたは、カンマ区切りの文字列で選択した値を格納し、代わりにコントロールのアカウントのプロパティにその場を投稿するJSを使用することができることを行うことができない場合:

<select id="account-list" multiple="multiple" class="form-control" asp-for="Accounts"> 
    <option>Test</option> 
    <option>Test 1</option> 
    <option>Test 2</option> 
    <option>Test 3</option> 
</select> 

<input type="hidden" id="accountInternal" name="accounts[]" value="" /> 

$("form").submit(function() { 
    $("#accountInternal").val($("#account-list").val().toString()); 
    return true; 
});