まず、各行に編集ボタンがあるレコードのリストがあります(下の画像1の親ウィンドウを参照してください)。編集ボタンをクリックすると、ポップアップが表示され、ポップアップウィンドウに[回答]フィールドが表示されます(画像2の子ウィンドウを参照してください)。ポップアップウィンドウには、回答値を処理するテキスト領域があり、ここからユーザーは値を追加/削除できます。ユーザーが[保存]ボタンをクリックすると、値がデータベースに保存され、親ウィンドウで編集するように選択された特定の行の回答フィールドの変更された値が反映されます。
これまでの私のコードは次のとおりです。方法がわからないため、まだコントローラーを実装していません。データをdadabaseに保存するためにコントローラーをここで呼び出すことができるかどうかもわかりません。
私はMVCを初めて使用します。私の問題を助け、理解してくれる人がいることを望んでいます。
コントローラ:
[HttpPost]
public ActionResult Sample(string answers, string question, string controlid, string eventid)
{
return View("CustomizedQuestion");
}
Javascript:
$(".editButton").live("click", function (e) {
e.preventDefault();
var $title = $(this).attr("title");
var $answers = $(this).attr("answers");
var $controlid = $(this).attr("id");
dropdownlist($controlid, $title, $answers);
});
function dropdownlist(controlid, title, answers, eventid) {
var $answersreplaced = answers.replace(/\,/g, " \r");
var $deleteDialog = $('<div><textarea id="answerlist" rows="10" cols="50">' + $answersreplaced + '</textarea><div><div style="font-size:9px">(To change back to an open answer field, delete all choices above and save)</div>');
$deleteDialog.dialog({
resizable: false,
height: 280,
width: 350,
title: title + " - Edit Choices",
modal: true,
buttons: {
"Save": function () {
$.ajax({
url: '@Url.Action("Sample")',
type: 'POST',
dataType: 'json',
data: { answers: $('#answerlist').val(),
question: title,
controlid: controlid,
eventid: eventid
},
success: function (resp) {
$(this).dialog("close");
},
error: function () {
alert('there was a problem saving the new answers, please try again');
}
});
},
Cancel: function () {
$(this).dialog("close");
}
}
});
};