我正在一个ASP MVC应用程序。我有一个从视图模型(任务名称)填充的选择列表。基于选定的项目,十进制值将放置在TaskValue的文本框中。 jquery方面正在工作,该值显示在字段中,但提交时,TaskValue字段为空。我如何获得提交的价值?从jquery填充的字段值,不保存到模型
视图模型:
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")
你应该首先区分,如果问题是出在MVC或jQuery的。你说jQuery正在工作,那么你为什么要给你的问题增加噪音。如果您向我们提供与问题最相关的信息,帮助您会容易得多。我希望在视图中看到更多的表单(您甚至没有向我们展示无法在提交时绑定的输入)。对你的EDIT ..要么发送'空'模型或属性CompTaskModel您的模型类为空 – mipe34