【发布时间】:2017-08-24 11:09:36
【问题描述】:
我有公司表和空缺职位。
公司有一些职位空缺
所以我选择了公司,第二个下拉列表会根据公司进行更新。
这里是查看代码(DropdownList 部分)
<div class="right-grid-in-grid" style="width:100%;">
<div style="margin-left:20px;width:50%; ">
@Html.DropDownList("Company", ViewBag.Companies as SelectList, new { @class = "greeting" })
@Html.ValidationMessageFor(model => model.VacancyId, "", new { @class = "text-danger" })
</div>
<div style="margin-left:20px;width:100%">
<select name="id" id="vacancy" style="width:55%" class="greeting" data-url="@Url.Action("Vacancies","Questions")" />
</div>
这是 AJAX 请求的代码
$(function () {
$("#Company").change(function (e) {
var $vacancy = $("#vacancy");
var url = $vacancy.data("url") + '?companyId=' + $(this).val();
$.getJSON(url, function (items) {
$.each(items, function (a, b) {
$vacancy.append('<option value="' + b.Value + '">' + b.Text + '</option>');
});
});
});
});
这是控制器代码
public ActionResult WelcomeScreen()
{
// Формируем список команд для передачи в представление
//SelectList teams = new SelectList(db.Vacancy, "VacancyId", "VacancyName");
//ViewBag.Teams = teams;
ViewBag.Companies = new SelectList(db.Companies, "CompanyID", "CompanyName");
return View();
}
//Заносим инфу о вакансии в таблицу
[HttpPost]
public ActionResult WelcomeScreen(Interview interview)
{
db.Interview.Add(interview);
db.SaveChanges();
return RedirectToAction("Index", "Questions", new { id = interview.Interview_Id });
}
我的问题 - 我需要从第二个下拉列表中获取 VacancyId 并将其写入表格。
所有其他数据都写得很好。
不只写VacancyId
这是表格代码
CREATE TABLE [dbo].[Interviews] (
[Interview_Id] INT IDENTITY (1, 1) NOT NULL,
[Greeting] NVARCHAR (MAX) NULL,
[Detail] NVARCHAR (MAX) NULL,
[VacancyId] INT NULL,
PRIMARY KEY CLUSTERED ([Interview_Id] ASC),
CONSTRAINT [FK_Interviews_ToTable] FOREIGN KEY ([VacancyId]) REFERENCES [dbo].[Vacancies] ([VacancyId]) ON DELETE CASCADE);
【问题讨论】:
-
据我了解,您需要从第二个 DDL 中获取所选值。这很简单。只需使用 document.getElementById('whateveryouhavegiven').value。然后将其包含在 AJAX 调用中并在后端代码中处理
-
有些喜欢
VacancyId: $('#vacancy').val(),?@It'satrap -
我不确定 Jquery 语法。但是是的,只有
-
什么是
VacancyId?您的表单不会为该属性创建表单控件。你所拥有的只是<select>和name="id",而不是VacancyId。停止手动创建 html 并使用HtmlHelper方法绑定到您的模型。并参考this DotNetFiddle 了解如何正确实现级联下拉列表 -
首先,
ValidationMessageFor不能仅使用select标签 - 它应该有 DDL 助手:@Html.DropDownListFor(model => model.VacancyId, ViewBag.Vacancies as SelectList, new { @id = "vacancy", @data_url = Url.Action("Vacancies","Questions")}),在 JS 中:var vacancy = $("#vacancy").val();。公司 DDL 也应该绑定模型:@Html.DropDownListFor(m => m.Company, ViewBag.Companies as SelectList, new { @id = "Company", @class = "greeting" }).
标签: c# asp.net ajax asp.net-mvc asp.net-mvc-4