Asp.Net MVC、Entity Framework を使用しています。以下のようなフォームがあります。
ここでは、ドロップダウン リストはテーブル (タイプ) から入力されます。チェックボックスは別のテーブル (テスト) から入力されます。テーブルは次のようになります。
public class Types
{
public int TypesID{get;set;}
public string TestName { get; set; }
public string TestExplanation { get; set; }
public int TestTime { get; set; }
}
public class Tests
{
public int TestID{get;set;
public string Name { get; set; }
public string Code { get; set; }
}
public class Types_Tests
{
public int Types_TestsID{ get; set; }
public int TypesID { get; set; }
public int TestsID { get; set; }
public virtual Types Types { get; set; }
public virtual Tests Tests { get; set; }
}
Types_test テーブルは、Types と Tests の間の関係テーブルです。Kaydet ボタンをクリックすると、タイプとチェック済みのテストが保存されます。ViewBag、javascript、および hdnvalue を使用してこの操作を行いました。チェックボックスの値を hdntext に追加しました。以下のような保存プロセスを作成しました。
[HttpPost]
public ActionResult Index(string drpType, string hdntesttypes)
{
var TypeList = Types.GetAll();
ViewBag.TypesList = new SelectList(TypeList, "Id", "Name");
var testypeList = testTypes.GetAll();
ViewBag.TestTypesList = new SelectList(testypeList, "Id", "TestName");
GenericRepository<TestDisabledTypes> testDisabledRepository = new GenericRepository<TestDisabledTypes>(_context);
if (!string.IsNullOrEmpty(hdntesttypes))
{
string[] disabletypesArray = hdntesttypes.Split(',');
using (TransactionScope trns = new TransactionScope())
{
for (int i = 0; i < disabletypesArray.Length; i++)
{
Test_Types types = new Test_Types ();
types.TestTypesID = Convert.ToInt32(disabletypesArray[i]);
types.TypesID = Convert.ToInt32(drpType);
testDisabledRepository.Insert(types);
}
trns.Complete();
}
}
return View();
}
それはうまくいきます。しかし、私はこのプロセスのより良い解決策を探しています。誰かが私に何か考えを与えることができますか? ありがとう。