cshtml ページに複数のフォームがあります。これらのフォームの最初のものは正しくバインドされますが、2 番目のものはバインドできませんでした。送信ボタンをクリックするたびに、渡された値はすべて 0 または null (それぞれ int と文字列) になります。
私のモデルには 2 つのオブジェクトが含まれています。AccountInfo と AccountSettings のリスト:
public class AccountDetailViewRequest
{
public Account AccountInfo { get; set; }
public List<AccountSettings> Settings { get; set; }
}
public class AccountSettings
{
public int AccountID;
public string Name;
public string Value;
public int ID;
}
私の行動。最初のアクションは正しく機能しますが、2 番目のアクションは機能しません。
public ActionResult UpdateAccountDetails(Account model)
{...}
public ActionResult DeleteSetting(AccountSettings model)
{...}
私のcshtmlページには、正しく機能するこのブロックがあります
@using (Html.BeginForm("UpdateAccountDetails", "Account"))
{
<input type = "hidden" name = "AccountInfo.AcctID" value = @Model.AccountInfo.AcctID />
<table>
<tr>
<td>Company @Html.TextBox("AccountInfo.Company")</td>
<--More text boxes here-->
</tr>
<tr>
<td><input name="Save" type="submit" value="Save Changes"/></td>
</tr>
</table>
}
ページの後半に、このブロックがあります。関連付けられた送信ボタンを使用すると、関数が呼び出されますが、テキスト ボックスの内容に関係なく、パラメーターはすべて 0 または null です。コードのソースを表示すると、DB からボックスが適切に取り込まれます。
@for (int index = 0; index < Model.Settings.Count; index++)
{
var setting = Model.Settings[index];
using (Html.BeginForm("DeleteSetting", "Account"))
{
<tr>
<td>@Html.TextBox("Name", @Model.Settings[index].Name)</td>
<td>@Html.TextBox("Value", setting.Value)</td>
@Html.Hidden("ID", setting.ID)
@Html.Hidden("AccountID", Model.AccountInfo.AcctID)
<td><input type="submit" value="Delete"/></td>
</tr>
}
}
構文についてさまざまなバリエーションを試しましたが、うまくいかないようです。提案、解決策、およびリソースを歓迎します。前もって感謝します。