在表单周围添加 标记会禁止 Razor 代码填写输入元素 本文关键字:代码 Razor 禁止 元素 输入 添加 周围 表单 form | 更新日期: 2024-10-25 21:35:04 我正在为事件数据模型创建一个编辑表单,其中输入元素填充了事件属性以进行编辑。 完成填充字段和设置页面格式后,我意识到我忘记了表单标签。 添加它们后,我的 Razor 代码完全停止工作,将所有输入元素留空。 我尝试禁用代码的各个部分,包括所有 javascript 和 css,除了删除表单标签之外,似乎没有任何东西可以重新填充字段。 这是代码: @model Objects.Models.Event.Event @using EventSignup.Extensions @{ ViewBag.Title = "Edit"; } <script src="@Url.Content("~/Scripts/jquery-ui-1.8.22.min.js")" type="text/javascript"></script> <link href="@Url.Content("~/Content/themes/base/jquery.ui.all.css")" rel="stylesheet" type="text/css" /> <script src="@Url.Content("~/Javascript/jquery-ui-timepicker-addon.js")" type="text/javascript"></script> <script src="@Url.Content("~/Javascript/Edit.js")" type="text/javascript" ></script> <h2>Edit</h2> <div class="hero-unit"> <form action="" id="event_form" method="post"> <label for="name">Event Name:</label> <input type="text" name="name" id="name" value="@Model.EventName" /><br /> <label for="tickets"># of Tickets:</label> <input type="text" name="tickets" id="tickets" value="@Model.Tickets" /><br /> <label for="location">Location:</label> <select name="location" id="location"> @foreach (var Element in ViewBag.Buildings as List<EventSignup.ViewModels.SelectElement>) { <option value="@Element.ID" @((Model.TicketsLocation.ID == @Element.ID) ? "selected='selected'" : "")>@Element.DisplayName</option> } </select><br /> <label for="dates">Dates/Times:</label> @foreach (var EventInfo in Model.Dates) { <input type="text" class="date" name="dates" id="dates@(Model.Dates.IndexOf(EventInfo)+1)" value="@EventInfo.DateTime.ToDateTimePickerString()"/><br /> if (EventInfo != Model.Dates.Last()) { <label></label> } } <div id="date_inputs"> </div> <label></label> <span id="new_date" class="fauxlink" onclick="newDate()">New Date/Time</span><br /><br /> <input type="hidden" id="num_dates" value="@Model.Dates.Count" /> <input type="submit" id="submit" value="Submit" /><br /> </form> </div> 不要直接使用表单元素 - 使用 BeginForm HTML 帮助程序: @using (Html.BeginForm()) { } 您还应该将模板编辑器用于不同的模型属性: @Html.EditorFor(model => model.EventName) 更新:我通常会发现,如果标记无效(属性末尾缺少",元素未正确关闭等),Visual Studio/Razor将停止工作(例如没有智能感知)。仔细检查您的标记,看看您在哪里出现此类错误。 您应该考虑使用 Asp.net mvc 3 帮助程序来构建表单而不是常规 html 标记,并基于模型构建表单。这还会对您的表单输入进行编码,并允许您验证 AntiFrogery 令牌: @using (Html.BeginForm("actionhere", ..other arguments)) { @Html.DropDownFor(x => x.ModelProperty, Model.List); }