VisualStudio2010とMVC2.0を使用しています。
私のコントローラーには、ビューページcustomerDataAddからデータを選択するViewResultがあります。8つのフィールド(テキストボックス)があります。この8フィールドのget{}とset{}だけのモデルがあります。
問題は、送信ボタンのアクションで、ViewResultに移動し、model.Customerのオブジェクトを作成し、ビューからモデルプロパティにデータを挿入しようとして失敗することです。
エラーは次のとおりです。オブジェクト参照がオブジェクトのインスタンスに設定されていません。
以下に私のコードの一部を示します。
Customer.cs-モデルクラス
private string _FirstName;
public string FirstName
{
get { return _FirstName; }
set { _FirstName = value; }
}
private string _LastName;
public string LastName
{......}
private string _Street;
public string Street
{......}
private string _Village;
public string Village
{......}
private string _Thana;
public string Thana
{......}
private string _District;
public string District
{......}
private string _Division;
public string Division
{......}
private string _Country;
public string Country
{......}
CustomerController.cs-> ViewResul DisplayCustomer()->エラーが表示される場所は2行目です。
[HttpPost]
public ViewResult DisplayCustomer()
{
Models.Customer customerView = new Models.Customer(); //all customerview properties are null??
**customerView.FirstName = Request.Form["atxtFirstName"].ToString();** //firstname gets null??
customerView.LastName = Request.Form["atxtLastName"].ToString();
customerView.Street = Request.Form["atxtStreet"].ToString();
customerView.Village = Request.Form["atxtVillage"].ToString();
customerView.Thana = Request.Form["atxtThana"].ToString();
customerView.District = Request.Form["atxtDistrict"].ToString();
customerView.Division = Request.Form["atxtDivision"].ToString();
customerView.Country = Request.Form["atxtCountry"].ToString();
return View();
}
[編集-1]私のフォームの値["atxtFirstName"]。ToString() = nullを表示しています。言ったように私はFormCollectionでそれを編集しました。
[編集-2]
これが私のDisplayCustomer.aspxです
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<SimpleExample.Models.Customer>" %>
DisplayCustomer
<h2>DisplayCustomer</h2>
<div>
<table runat="server" width="30%">
<tr>
<td width="30%">Customer Name: </td>
<td><%= Model.FirstName + " " + Model.LastName %></td>
</tr>
<tr>
<td>Customer Address: </td>
<td><%= Model.Street + ", " + Model.Village + ", " + Model.Thana + ", <br/>" + Model.District + ", " + Model.Division + ", " + Model.Country %></td>
</tr>
</table>
</div>
MyCustomerDataAdd.aspx-フォームだけがここに表示されます。
<form id="afrmCustomer" runat="server" action="DisplayCustomer" method="post">
<table width="30%">
<tr>
<td width="30%">
<asp:Label ID="Label8" Text="First Name:" runat="server" />
</td>
<td>
<asp:TextBox name="atxtFirstName" runat="server" />
</td>
<td width="30%">
<asp:Label ID="Label1" Text="Last Name:" runat="server" />
</td>
<td>
<asp:TextBox name="atxtLastName" runat="server" />
</td>
</tr>
<tr>
<td width="30%">
<asp:Label ID="Label2" Text="Street:" runat="server" />
</td>
<td>
<asp:TextBox name="atxtStreet" runat="server" />
</td>
<td width="30%">
<asp:Label ID="Label7" Text="Village:" runat="server" />
</td>
<td>
<asp:TextBox name="atxtVillage" runat="server" />
</td>
</tr>
<tr>
<td width="30%">
<asp:Label ID="Label3" Text="Thana / Upazilla:" runat="server" />
</td>
<td>
<asp:TextBox name="atxtThana" runat="server" />
</td>
<td width="30%">
<asp:Label ID="Label6" Text="District:" runat="server" />
</td>
<td>
<asp:TextBox name="atxtDistrict" runat="server" />
</td>
</tr>
<tr>
<td width="30%">
<asp:Label ID="Label4" Text="Division:" runat="server" />
</td>
<td>
<asp:TextBox name="atxtDivision" runat="server" />
</td>
<td width="30%">
<asp:Label ID="Label5" Text="Country:" runat="server" />
</td>
<td>
<asp:TextBox name="atxtCountry" runat="server" />
</td>
</tr>
<tr>
<td width="30%">
</td>
<td>
<asp:Button name="abtnSubmit" Text="Submit" runat="server" />
</td>
<td width="30%">
</td>
<td>
</td>
</tr>
</table>
</form>