1

asp.net MVC 2.0 でサンプルを開発しています。私のビュー (ProductDetails.aspx) には、同じコントローラー (ProductController) に存在する異なるアクション メソッドを呼び出す 3 つのリンク ボタンがあります。検索リンクをクリックすると、適切なアクション メソッドが呼び出されますが、文字列pid=Request.Form["tbPid"]を使用してフォーム コレクションからデータを取得すると、pid に null 値が取得されます。問題の修正を手伝ってください。

注: AddProduct リンクのコードはありませんが、問題はないと思います。

ビューのコード:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MVCProductDetailsDemo.Models.ProductModel>" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ProductDetails</title>
</head>
<body> 
    <div>
       <% using(Html.BeginForm()){ %>
        pid:<%=Html.TextBox("tbPid") %>
        <%=Html.ActionLink("Search Product", "SearchProducts", "Product")%><br />
        <%if (Model != null)
          { %>
        pname:<%=Html.TextBox("tbPname", Model.PName)%><br />
        Minqty:<%=Html.TextBox("tbMinQty",Model.MinOrdQty) %><br />
        Maxqty:<%=Html.TextBox("tbMaxQty",Model.MaxOrdQty) %><br />
        Up:<%=Html.TextBox("tbUP",Model.UnitPrice) %><br />
        <%} %>
        <%else { %>
              Pname:<%=Html.TextBox("tbPname") %>
              MinQty:<%= Html.TextBox("tbMinQty")%>
              MaxQty:<%=Html.TextBox("tbMaxQty")%>
              UP:<%=Html.TextBox("tbUP") %>
          <%} %>
        Manifacturer:<%=Html.DropDownList("manifacturers") %><br />




        <%=Html.ActionLink("Add Product","AddProduct","Product") %>
        <%=Html.ActionLink("Upd Product","UpdateProduct","Product") %>
        <%=Html.ActionLink("Del Product","DeleteProduct","Product") %>
       <%} %>
    </div>
</body>
</html>

**Code for Controller:**
 namespace MVCProductDetailsDemo.Controllers
{
    public class ProductController : Controller
    {
        //Normal Methods and ActionMethods.
        //ActionMethods are the methods which will usually call the views.
        public ActionResult DisplayProduct()
        {
            List<string> lstManifacturers=GetManifacturers();
            ViewData["manifacturers"] = new SelectList(lstManifacturers);
            return View("ProductDetails");
        }
        public List<string> GetManifacturers()
        {
            Manifacturers manifacturer = new Manifacturers();
            return manifacturer.GetManifacturers();
        }
        public ActionResult SearchProducts()
        {
            string pid=Request.Form["tbPid"];
            Products products = new Products();
            ProductModel pModel=products.GetProductDetails(Convert.ToInt32(pid));
            List<string> lstManifacturers = GetManifacturers();
            ViewData["manifacturers"] = new SelectList(lstManifacturers);
            return View("ProductDetails", pModel);
        }
        public ActionResult UpdateProduct()
        {
            string pid = Request.Form["tbPid"];
            string pname = Request.Form["tbPname"];
            string minqty = Request.Form["tbMinQty"];
            string maxqty = Request.Form["tbMaxQty"];
            string up = Request.Form["tbUP"];
            Products products = new Products();
            ProductModel pModel = new ProductModel();
            pModel.Mid = 1;
            pModel.PName = pname;
            pModel.MinOrdQty = Convert.ToInt32(minqty);
            pModel.MaxOrdQty = Convert.ToInt32(maxqty);
            pModel.Pid = Convert.ToInt32(pid);
            pModel.UnitPrice = Convert.ToInt32(up);
            bool isRecordUpdated = products.UpdateProducts(pModel);
            List<string> lstManifacturers = GetManifacturers();
            ViewData["manifacturers"] = new SelectList(lstManifacturers);
            return View("ProductDetails", pModel);
        }
        public ActionResult DeleteProduct()
        {
            string pid = Request.Form["tbPid"];
            Products products = new Products();
            bool isRecordDeleted = products.DeleteProduct(Convert.ToInt32(pid));
            List<string> lstManifacturers = GetManifacturers();
            ViewData["manifacturers"] = new SelectList(lstManifacturers);
            return View("ProductDetails");
        }
    }
}
4

1 に答える 1