テキストボックスにsummernoteプラグインを使用しています: http://summernote.org/#/getting-started#basic-api
これは私がsummmernoteを使用しているフォームです:
_<div class="modal-body" style="max-height: 600px">
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset class="form-horizontal">
<div id="textForLabelLanguage"></div>
<button type="submit" class="btn btn-primary">Save changes</button>
@Html.ActionLink("Cancel", "Index", null, new { @class = "btn " })
</fieldset>
}
</div>
<script type="text/javascript">
$(document).ready(function () {
$('#textForLabelLanguage').summernote();
});
</script>
_
さて、私のコントローラーでは、これは私が持っているコードです:
_public ActionResult Create(UserInfo newInfo , [Bind(Prefix = "textForLabelLanguage")] string textForLabelLanguage)
{
//logic here
}
_
ここで問題となるのは、textForLabelLanguage
paramが常にnullであるということです。
これは、フォームを送信するときに$('#textForLabelLanguage').code();
をMVCに渡す必要があるために発生しますが、その方法がわかりません。
問題を解決するにはどうすればよいですか?
私はその問題の解決策を見つけました。これは私がコントローラーに正しい情報を取得させる方法です:
<div class="modal-body" style="max-height: 600px">
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset class="form-horizontal">
<textarea name="textForLabelLanguage" id="textForLabelLanguage" />
<button type="submit" class="btn btn-primary">Save changes</button>
@Html.ActionLink("Cancel", "Index", null, new { @class = "btn " })
</fieldset>
}
</div>
<script type="text/javascript">
$(document).ready(function () {
$('#textForLabelLanguage').summernote();
});
</script>
基本的に、入力などの代わりに名前の付いたtextareaを使用すると、機能します。
ただし、このソリューションは機能しますが、コントローラーで次のようなエラーが発生することに注意してください。
潜在的に危険なRequest.Form値がクライアントから検出されました
これは、HTMLを許可しているために発生します。しかし、これは別の質問の問題です!
使ってください [AllowHTML]
MSDNに良い記事がありますASP.NETでの検証の要求
「特定のプロパティのリクエスト検証を無効にするには、AllowHtml属性でプロパティ定義をマークします。」
[AllowHtml]
public string Prop1 { get; set; }
以前に投稿されたものと同様に、HTMLヘルパーを使用できます
@HTML.TextAreaFor( m=> m.text, new {@id = "textFor*Model*"})
の代わりに <textarea>