ASPMVCアプリに取り組んでいます。ビューモデル(タスク名)から入力された選択リストがあります。選択した項目に基づいて、TaskValueのテキストボックスに10進値が配置されます。jquery側は機能しており、値はフィールドに表示されますが、送信されると、TaskValueフィールドはnullになります。送信する値を取得するにはどうすればよいですか?
ViewModel:
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; }
}
}
TaskListモデル
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);
}
ご協力いただきありがとうございます。
編集:ビューのドロップダウン行に「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーも表示されます。
@Html.DropDownListFor(m => m.CompTaskModel.TaskName, new SelectList(Model.Tasks, "Value", "Text"), "Select a Job")