Search code examples
asp.net-mvcrazorhttprequest

Cannot apply indexing with [] to an expression of type 'HttpRequest'


I am trying to get a value from a textbox of my View.

This is my View:

    @model MyDataIndexViewModel

@{
    <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-12">
            <h1>Meine Daten</h1>
        </div>
    </div>
    var item = Model.User;
        <div class="row">
            <div class="col-xs-6 col-sm-6 col-md-6 myDataTitle">Email</div>
            <div class="col-xs-6 col-sm-6 col-md-6">
                @Html.TextBox("txtEmail", "", new { placeholder = item.Email})
            </div>
        </div>
}

<div class="row">
    <div class="col-xs-12 col-sm-12 col-md-12">
        <a class="btn btn-default pull-right" href="/ChangeMyData/Save">Speichern</a>
    </div>
</div>

This is my Controller:

   [HttpPost]
    public ActionResult Save()
    {
        var email = Request["txtEmail"].ToString();
        return View();
    }

I get the error just as it says in the Title. Thank you in advance!


Solution

  • VIEW:

    @model MyDataIndexViewModel
    
    
    @using (Html.BeginForm("Save", "CONTROLLER_NAME"))
    {
    <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-12">
            <h1>Meine Daten</h1>
        </div>
    </div>
    var item = Model.User;
        <div class="row">
            <div class="col-xs-6 col-sm-6 col-md-6 myDataTitle">Email</div>
            <div class="col-xs-6 col-sm-6 col-md-6">
                @Html.TextBox("txtEmail", "", new { placeholder = item.Email, id="txtEmail"})
            </div>
        </div>
    <div class="row">
    <div class="col-xs-12 col-sm-12 col-md-12">
        <a class="submit btn btn-default pull-right">Speichern</a>
    </div>
    </div>
    }
    

    CONTROLLER

    [HttpPost]    
    public ActionResult Save()
    {
        var email = Request.Form["txtEmail"].ToString();
        return View();
    }