0

モデルをビューからコントローラーに強く型付けしようとしています。私の見解は強く型付けされています。コントローラーで「保存」アクションメソッドが呼び出されると、どういうわけかプロパティ値に「null」が表示されます。を使用してAsp.Net MVC 3います。

これは私のビューがどのように見えるかです:

@model MvcApplication2.Models.Event
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <title>AddNew</title>
</head>
<body>
    @using(Html.BeginForm("Save","Event",FormMethod.Post, Model))
    {
        <div>
            <p>@Html.LabelFor(m=>m.EventName) @Html.TextBoxFor(m=>m.EventName)</p>
            <p>@Html.LabelFor(m=>m.Venue) @Html.TextBoxFor(m=>m.Venue)</p>
            <p>@Html.LabelFor(m=>m.StartTime) @Html.TextBoxFor(m=>m.StartTime)</p>
            <p>@Html.LabelFor(m=>m.EndTime) @Html.TextBoxFor(m=>m.EndTime)</p>
            @Html.ActionLink("Save Event", "Save")
        </div>
        }
</body>
</html>

これは私EventControllerのように見える方法です:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcApplication2.Models;

namespace MvcApplication2.Controllers
{
    public class EventController : Controller
    {

        public string Save(Event eventModel)
        {
           //Here eventModel.EventName and rest of the properties are null.

            return "Saved";
        }

    }
}

モデルは次のようになります。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MvcApplication2.Models
{
    public class Event
    {
        public string EventName { get; set; }
        public string Venue { get; set; }
        public string StartTime { get; set; }
        public string EndTime { get; set; }
    }
}
4

2 に答える 2

1

ActionLinks はフォームを送信しません。変化する:

@Html.ActionLink("Save Event", "Save")

<input type="submit" value="Save">

さらに、メソッドに追加した場合、これはより顕著[HttpPost]になります。

    [HttpPost]
    public string Save(Event eventModel)
    {
       //Here eventModel.EventName and rest of the properties are null.

        return "Saved";
    }
于 2012-07-26T16:33:59.137 に答える
1

ActionLinkヘルパー メソッドは、リンクであるアンカー タグをレンダリングします。フォームは送信されません。Erik が述べたように、フォームに送信ボタンが必要です。

送信ボタンの代わりにリンクを保持したい場合は、JavaScript コードを使用してフォームを送信できます。

<script type="text/javascript"> 

    $(function(){
      $("#Save").click(function(){
         $(this).closest("form").submit();        
      });
    });

</script>
于 2012-07-26T16:48:04.603 に答える