我正在开发一个 ASP MVC 应用程序。我有一个从视图模型(任务名称)填充的选择列表。根据选定的项目,十进制值将放置在 TaskValue 的文本框中。jquery 端正在工作,该值显示在字段中,但提交时,TaskValue 字段为空。如何获取要提交的值?
视图模型:
namespace MyJobs.Models
{
public class ViewModel
{
public CompletedTask CompTaskModel { get; set; }
public TaskList TaskListModel { get; set; }
public IEnumerable<SelectListItem> Tasks { get; set; }
}
}
CompletedTasks 模型:
namespace MyJobs.Models
{
[MetadataType(typeof(CompTaskData))]
public partial class CompletedTask
{
}
public class CompTaskData
{
public string TaskName { get; set; }
public decimal TaskValue { get; set; }
public DateTime CompDate { get; set; }
}
}
任务列表模型
namespace MyJobs.Models
{
[MetadataType (typeof(TaskListData))]
public partial class TaskList
{
}
public class TaskListData
{
public string TaskName { get; set; }
public decimal TaskValue { get; set; }
}
}
风景:
<div class="editor-field">
@Html.DropDownListFor(m => m.CompTaskModel.TaskName, new SelectList(Model.Tasks, "Value", "Text"), "Select a Job")
@Html.ValidationMessageFor(model => model.CompTaskModel.TaskName)
</div>
jQuery:
$(document).ready(function () {
$("#CompTaskModel_TaskName").change(function () {
var v = 0;
// var value = $("#CompTaskModel_TaskValue").val();
var task = $("#CompTaskModel_TaskName").val();
switch (task) {
case "1":
v = "$0.50";
break;
case "2":
v = "$0.75";
break;
case "3":
v = "$0.50";
break;
case "4":
v = "$0.75";
break;
default:
v = "Select a Job!";
}
$("#CompTaskModel_TaskValue").val(v);
});
});
控制器:
public ActionResult Index()
{
ViewModel vm = new ViewModel();
vm.Tasks = from e in db.TaskList.ToArray()
select new SelectListItem
{
Value = e.TaskId.ToString(),
Text = e.TaskName
};
return View(vm);
}
谢谢您的帮助。
编辑:在视图的 dropdownfor 行上,我也收到一个错误“对象引用未设置为对象的实例”:
@Html.DropDownListFor(m => m.CompTaskModel.TaskName, new SelectList(Model.Tasks, "Value", "Text"), "Select a Job")