2016-07-12 16 views
0

私はちょうどC#の学習を始め、簡単なプロジェクトを作成しようとしました。最初に私はテキストボックスを作成し、誰かが名前を入力すると、その名前は次のページに表示されるはずですが、何が間違っているのか分かりません。テキストボックスと送信ボタンが表示されます。テキストボックスに名前を入力して送信をクリックすると、次のページに表示されません。あなたの入力」フィールドのname属性の値はSearchStringあるシンプルなC#とMVCプロジェクト

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using System.Data.Entity; 
using Newproject.Models; 

namespace Newproject.Controllers 
{ 
public class HomeController : Controller 
{ 
    public ActionResult Index() 

    { 
     return View(); 
    } 

    public ActionResult Welcome(FormCollection form, string CustNo) 

    { 
     Session["SearchString"] = form["CustNo"]; 
     ViewBag.Name = Session["SearchString"]; 
      return View(); 
    } 
    } 
} 

Index.cshtml

@{ 
ViewBag.Title = "Access TextBox and TextboxFor Value From View To Controller In Asp.net MVC"; 

} 

    <br /> 
    @Html.Label("Name") 
    <br /> 
    @using (Html.BeginForm("Welcome","Home",FormMethod.Post)) 
    { 
    @Html.TextBox("SearchString", "", new { @class = "CustNo" }); 
     <br/> 
    <input id="btnSubmit" name="btnSubmit" placeholder="test" type="submit" onclick = "location.href='@Url.Action("Welcome", "Home", new {})'" /> 
     <br/> 

    } 

Welcome.cshtml

@{ 
ViewBag.Title = "Welcome"; 
string CustNo = ViewBag.Name; 
} 
    <p> @CustNo</p> 
+1

セッション["SearchString"] =フォーム["CustNo"]; 'でブレークポイントを設定し、その値がフォームからどのようなものか確認しましたか?これらは基本的なデバッグスキルです。また、ViewBagに頼るのではなく、MVCの "Model"部分を使用する必要があります。 – mason

答えて

3

ホームコントローラーを助けてください。だから、あなたはそれを探しているべきで、CustNoではありません。 CUSTNOは、あなたの入力フィールドのCSSクラス名は、あなたが

また
public ActionResult Welcome(string SearchString) 
{ 
    ViewBag.Name = SearchString; 
    return View(); 
} 

を確認してください(フォームにいくつかのjqueryのものをやっている場合を除き提出)のCSSクラス名を使用して入力フィールドの値を読み取ることができないです送信ボタンがクリックされたときにjavascriptを使ってリダイレクトするのではなく、通常のフォームを送信しています。

onclickハンドラを削除するだけです。あなたのボタンはフォーム内にあり、送信ボタンをクリックするとフォームが送信されます(フォームデータ付き)。

@using (Html.BeginForm("Welcome","Home",FormMethod.Post)) 
{ 
    @Html.TextBox("SearchString", "", new { @class = "CustNo" }); 
    <input id="btnSubmit" name="btnSubmit" placeholder="test" type="submit" /> 
} 
+1

よろしくお願いいたします – LohithT

0

今すぐ結果Index.cshtml

@using (Html.BeginForm("Welcome", "Home", FormMethod.Post)) 
{ 
    @Html.TextBox("SearchString") 
    <br /> 
    <input id="btnSubmit" name="btnSubmit" type="submit" /> 
    <br /> 
} 

enter image description here

をごHtml.BeginFormコードを置き換え

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult Welcome(FormCollection form) 
    { 
     ViewBag.Name = form["SearchString"]; 
     return View(); 
    } 
} 

ご自宅のコントローラを変更します。

enter image description here

関連する問題