0

削除用の scaffold 削除ビューを作成しましたが、機能しません。デバッグ中に、レコードの正しい ID がコントローラーに渡されないことがわかりました。常に ID として 0 を渡し、結果は例外です (ystem.NullReferenceException は、ユーザー コード Message=Object reference not set to an object によって処理されませんでした。)。

しかし、ビューの送信ボタンには、正しい ID を持つ正しい URL が表示されます。

コントローラ:

    public ActionResult DeleteSubject(int id)
    {
        try
        {
            // returns the View
        }
        catch (Exception e)
        {
            // Handle and log  the exception                
        }   
    }


    [HttpPost]
    public ActionResult DeleteSubject(SubjectModel subject)
    {
        try
        {
            // Call methods for delete
        }
        catch (Exception e)
        {
            // Handle and log  the exception 
        }  
    }

意見:

   @model LMS.Models.SubjectModel

   // ... form elements go here

   @using (Html.BeginForm()) { 
      <input type="submit" value="Delete" />
   }

[HttpPost] メソッドをブレークポイントでデバッグすると、メソッドが引数として受け取るオブジェクトが値で初期化されていないように見えます。ID フィールドには 0 を表示し、その他のフィールドには null を表示します。

ビューの再作成、コントローラーメソッドの書き換え、属性の変更などに取り組みましたが、それでも問題が発生します。ご意見をお待ちしております。

(ところで、Create、List、および Edit の scaffold ビューを作成しました。これらは完全に機能しています。)

ありがとう、

チャトゥール

4

2 に答える 2

0

フォームに投稿するたびに、id="form" があると常に役立つことに気付きました。

@using (Html.BeginForm("Create", "RunLogEntry", FormMethod.Post, new { id = "form", enctype = "multipart/form-data" }))
    {
于 2013-01-10T05:52:48.477 に答える
0

MVC では、Id パラメータが本体ではなく URL に渡されるデフォルトの方法です。そのため、null になっています。

httpPost の削除を変更します。

public ActionResult DeleteSubject(int id, SubjectModel subject)

// ... form elements go hereまた、私は内側に入る必要があるフォームの外側を持っていることに気付きました。

于 2016-04-27T09:26:12.880 に答える