简体   繁体   English

在Razor视图中获取/设置整数的值

[英]Getting/setting the value of an integer inside a Razor view

I have aa list of elements and I would like to edit it. 我有一个元素列表,我想编辑它。

I created this snippet: 我创建了这个片段:

@{
    ViewBag.Title = "Liste des comptes administrateurs";

    Layout = "~/Views/Shared/_Layout.cshtml";
    int i = 0;
}

<hgroup class="title">
    <h1 style="color: darkcyan">@ViewBag.Title</h1>
</hgroup>

<section>
    <form>
        <table>
            <tr>
                <td><input type="radio" name="color" id="val" value="red" onclick="@i = 1;">Red</td>
            </tr>
            <tr>
                <td><input type="radio" name="color" value="blue" onclick="@i = 2;">Blue</td>
            </tr>
        </table>
    </form>     
</section>
<section style="margin-top: 30px">        
    <a type="button" href="@Url.Action( "Delete", "Super", new { Id = @i } )">Supprimer</a>
    <a type="button" href="@Url.Action( "Edit", "Super", new { Id = @i } )">Editer</a>
    <br />
    <br />
    <a href="@Url.Action( "Admin_Creation", "Super" )" style="color: blue; margin-left: 150px">Créer un nouveau compte</a>           
</section>

My problem is that when I click into the button of edition the value of i is 0 even I checked one of the radio buttons. 我的问题是,当我点击版本按钮时, i值为0,即使我选中了其中一​​个单选按钮。 Its value didn't change and always is 0. 它的价值没有改变,总是0。

  • Why the value of i didn't change? 为什么价值i没有改变?
  • How can I fix this error? 我该如何解决这个错误?

You can do it with a FormCollection object. 您可以使用FormCollection对象执行此操作。

public ActionResult SomeActionMethod(FormCollection formCollection)
{
  foreach (var key in formCollection.AllKeys)
  {
    var value = formCollection[key];
  }
// or 
var color=formCollection["color"];
}

You should use some codes like these: 您应该使用以下代码:

Model: 模型:

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

namespace MvcDemo.Models
{
public class Color
{

        public int ID { get; set; }
        public Boolean Red { get; set; }
        public Boolean Blue { get; set; }


}
public class ColorContext : DbContext
{
    public DbSet<Color> Colors
    {
        get;
        set;

    }


}
}

View: 视图:

@model MvcDemo.Models.Color

<form action="" method="post" enctype="multipart/form-data">


<table >
<tr>
<td>
  @Html.RadioButtonFor(model=>model.Red,false);

</td>
</tr>
<tr>
<td>
  @Html.RadioButtonFor(model=>model.Blue,false);
</td>
</tr>
</table>
<input type="submit" name="btn" value="update" />
</form>

Controller: 控制器:

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

namespace MvcDemo.Controllers
{
public class ColorsController : Controller
{
    //
    // GET: /Colors/
    ColorContext cc = new ColorContext();
    public ActionResult Index()
    {
        return View();
    }
    [HttpPost, ActionName("update")]
    public ActionResult Update(int id,Boolean blue,Boolean red)
    {
        Color color = cc.Colors.Find(id);
        color.Blue = blue;
        color.Red = red;
        cc.SaveChanges();
        return RedirectToAction("Index");
    }

}
}    

Use this code: 使用此代码:

@{
if(IsPost){
    int i;
    if(Request.Form["color"].Equals("red"))
      {
        i = 1;
      }
    else
      {
        i = 2; 
      }
   }
}

<hgroup class="title">
<h1 style="color:darkcyan">@ViewBag.Title</h1>
</hgroup>
<form action="" method="post" enctype="multipart/form-data">
 <table >
   <tr>
     <td>
       <input type="radio" name="color" id="val" value="red" >Red
     </td>
   </tr>
   <tr>
     <td>
       <input type="radio" name="color" value="blue" >Blue
     </td>
   </tr>
</table>
   <input type="submit" name="btn" value="update" />
</form>
...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM