2

私は次のモデルクラスを持っています:

 public class BASLPAcademics
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int BASLPAcademicID { get; set; }

        //[UIHint("BASLPApplicationFormModel")]
        public int BASLPApplicationID { get; set; }
        [ForeignKey("BASLPApplicationID")]
        public virtual BASLPApplicationFormModel BASLPApplication { get; set; }

        public string Subject { get; set; }

        public string Physics { get; set; }

        public string Chemistry { get; set; }

        public string Optional { get; set; }

        public int TotalMarks { get; set; }


    }

およびエディターテンプレート

@model OAMS.Models.BASLPAcademics

@{
    ViewBag.Title = "BASLPAcademics";
}

<tr>
    <td>
        @Model.Subject 
        @Html.HiddenFor(model=>model.BASLPAcademicID)
        @Html.HiddenFor(model => model.Subject)
        @Html.HiddenFor(model => model.BASLPApplication)
        @Html.HiddenFor(model => model.BASLPApplicationID)       
    </td>
    <td>
        @Html.EditorFor(model => model.Physics, new { @class = "BASLPAcademics Physics" })
    </td>
    <td>
        @Html.EditorFor(model => model.Chemistry, new { @class = "BASLPAcademics Chemistry" })
    </td>
    <td>
        @Html.EditorFor(model => model.Optional, new { @class = "BASLPAcademics Optional" })
    </td>
    <td>
        @Html.EditorFor(model => model.TotalMarks, new { @class = "BASLPAcademics TotalMarks" })
    </td>    
</tr>

および呼び出し元のエディター テンプレート

  @Html.EditorFor(model => model.BaslpAcademic)

私は取得しModel.Stateていますfalse

例外エラーあり

{System.InvalidOperationException: The parameter conversion from type 'System.String' to type 'OAMS.Models.BASLPAcademics' failed because no type converter can convert between these types.
   at System.Web.Mvc.ValueProviderResult.ConvertSimpleType(CultureInfo culture, Object value, Type destinationType)
   at System.Web.Mvc.ValueProviderResult.UnwrapPossibleArrayType(CultureInfo culture, Object value, Type destinationType)
   at System.Web.Mvc.ValueProviderResult.ConvertTo(Type type, CultureInfo culture)
   at System.Web.Mvc.DefaultModelBinder.ConvertProviderResult(ModelStateDictionary modelState, String modelStateKey, ValueProviderResult valueProviderResult, Type destinationType)}

edtorTemplate 消費フォームを編集しようとしているときにエラーが発生していましたが、viewModel を試してみましたが、まったく意味がありません。モデルは正しくバインドされているように見えますが、クイック ウォッチで、「タイプ 'System.String' からタイプ 'OAMS.Models.BASLPAcademics' へのパラメーター変換が失敗したため、これらのタイプ間で変換できるタイプ コンバーターがない」というメッセージが見つかりました。これに対する正しい解決策を共有してください。

編集:フィドラーの応答

ここに画像の説明を入力

 public class BASLPApplicationFormModel
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int BASLPApplicationID { get; set; }

        public string BASLPApplicationNo { get; set; }

        [Required]
        [Display(Name = "Name of Applicant")]
        public string tName { get; set; }

        [DataType(DataType.Date)]
        [Display(Name = "Date of Birth", Prompt = "DD/MM/YYYY")]
        public DateTime DateOfBirth { get; set; }

        public DateTime Created { get; set; }

        public virtual List<BASLPAcademics> BaslpAcademic { get; set; }

        public BASLPApplicationFormModel()
        {
            BaslpAcademic = new List<BASLPAcademics>();

        }
    }

モデル状態のキー エラーが見つかりました。

BaslpAcademic[0].BASLPApplication 
BaslpAcademic[1].BASLPApplication 

ここに画像の説明を入力

4

2 に答える 2

3

BASLPApplicationFormModel全体を隠しフィールドとして追加しようとしています。Html.HiddenFor<>式を文字列として評価しようとしますが、モデルでは実行できないため、エラーが発生します。ビューから次の行を削除してみてください。

@Html.HiddenFor(model => model.BASLPApplication)

それとも、実際にこれを代わりに呼び出したいのですか?

@Html.EditorFor(model => model.BASLPApplication)
于 2013-05-23T12:29:05.137 に答える
-1

View/EditorTemplate からこれを削除します。

@Html.HiddenFor(model => model.BASLPApplication)
于 2013-05-24T05:17:47.083 に答える