保留错误/异常的表单值

时间:2013-01-16 22:36:15

标签: asp.net-mvc c#-4.0 asp.net-mvc-4 angularjs

我正在使用Html.TextBoxFor输入文本并稍后提交。 我想得到的是,在异常/错误的情况下,提交时将用户返回到表单视图以及之前输入的值

我的POST动作:

[HttpPost]
public ActionResults Add(Model model)
{
    try
    {
        //on succeed
        _repository.Add(model);
        return RedirectToAction("ThankYou", "Home");
    }
    catch(Exception ex)
    {
        ModelState.AddModelError('foo', ex.Message);
    }

    return View(model);
}

查看代码:

<div class="origin">
                <div class="float-left margin-right">
                    @Html.LabelFor(m => m.From, "From:", new { @class = "block-display" })
                    @Html.TextBoxFor(m => m.From, new
                        {
                            type = "text",
                            @class = "airport-auto-complete",
                            auto_complete = "",
                            placeholder = "enter place or airport",
                            ng_model = "From"
                        })
                </div>
                <div class="float-left">
                    @Html.LabelFor(m => m.DepartAt, "Depart:", new { @class = "block-display" })
                    @Html.TextBoxFor(m => m.DepartAt, new
                        {
                            type = "text",
                            @class = "begin-trip-date date-input",
                            ng_model = "DepartAt"
                        })
                    <input type="button" class="more-options-btn" value="More.." />
                    <input type="button" class="transport-btn" />
                </div>
                <br style="clear: left;" />
            </div>
            <div class="more-details">
                <div>
                    <label>
                        <input type="checkbox" id="allow-via" />
                        Allow nearby</label>
                    <br />
                </div>
                <div>
                    <label for="via" class="block-display">Via:</label><input type="text" id="via" auto-complete />
                </div>
                <div>
                    <div class="float-left left">
                        <label for="flight-num" class="block-display">Flight No.:</label><input type="text" id="flight-num" />
                    </div>
                    <div class="float-left">
                        <label for="stops" class="block-display">Stops:</label><input type="text" id="stops" />
                    </div>
                </div>
            </div>
            <div class="destination">
                <div class="float-left margin-right">
                    @Html.LabelFor(m => m.To, "To:", new { @class = "block-display" })
                    @Html.TextBoxFor(m => m.To, new
               {
                   type = "text",
                   @class = "airport-auto-complete",
                   auto_complete = "",
                   placeholder = "enter place or airport",
                   ng_model = "To"
               })
                </div>
                <div class="float-left">
                    @Html.LabelFor(m => m.ReturnAt, "Return:", new { @class = "block-display" })
                    @Html.TextBoxFor(m => m.ReturnAt, new
               {
                   type = "text",
                   @class = "end-trip-date date-input",
                   ng_model = "ReturnAt"
               })
                </div>
                <br style="clear: left;" />
            </div>

1 个答案:

答案 0 :(得分:0)

事实证明ng_model = "To"属性是导致此问题的原因。 ng-model是AngularJs框架的内置指令,它处理客户端数据绑定,因为此范围内没有数据,我看不到数据。

您可以在此处阅读:ngModel