回发后MVC TextAreaFor不会改变

时间:2015-11-12 16:19:58

标签: asp.net-mvc asp.net-mvc-4

我正在使用MVC视图,该视图显示带有HTML标记的一些文本。我在我的视图模型中定义了这样的字段:

public class RequestReviewViewModel
{
    [Display(Name = "Email Body")]
    [AllowHtml]
    [DataType(DataType.MultilineText)]
    public string LetterTemplateBody { get; set; }
}

当用户在下拉列表中选择一个新选项时,我正在捕获回发并使用新数据更新字段以显示在TextArea中。但是TextArea不会改变。

我的控制器中有这个代码:

var letterTemplList = 
    db.EmailBodyTemplate.Where(x => x.EmailTemplateTypeId == (int)EmailTemplateTypes.requestreview).ToList();
ViewBag.LetterTemplates = 
    new SelectList(letterTemplList, "EmailTemplateId", "EmailTemplateName");
var letterTemplate = 
    letterTemplList.Find(x => x.EmailTemplateId == thisModel.LetterTemplateId);
thisModel.LetterTemplateBody = 
    letterTemplate == null ? letterTemplList.First().Body : letterTemplate.Body;

// in this case, mode == "letterTemplate"
if (mode == "reviewRole" || mode == "letterTemplate" || !ModelState.IsValid)
{
    if (model.InitialRoleId != model.SelectedRoleId)
        model.SelectedProjectReviewers = GetReviewerProfiles(model.ProjectId, model.SelectedRoleId);

    return View(model);
}

这是显示字段的位置:

<div class="row">
    @Html.LabelFor(model => model.LetterTemplateBody, new { @class = "control-label" })
    @Html.TextAreaFor(model => model.LetterTemplateBody, 
        new { @class = "form-control", @style = "max-width:100%;height:400px;font-size:11px;" })
</div>
<p>@Model.LetterTemplateBody</p>

使用调试器,我可以看到model.LetterTemplateBody有新结果。但是,当我查看页面(在chrome中)时,TextArea中的值/数据没有改变,但是<p>已经改变了。

什么可能导致textarea无法更新?其他回调使用相同的控制器操作更新页面。

以下是它在浏览器中的呈现方式:

<textarea 
    class="form-control" 
    cols="20" 
    id="LetterTemplateBody" 
    name="LetterTemplateBody" 
    rows="2" 
    style="max-width:100%;height:400px;font-size:11px;">
Text from initial load
</textarea>

0 个答案:

没有答案