在IEnumerable方法中传递值

时间:2013-09-15 06:24:38

标签: c# asp.net-mvc ienumerable

net mvc c#。我已经为视图创建了模型。我可以从表中接收所有行,但是当我尝试在方法中传递值时,返回列表不起作用   这是我的代码
控制器类

public ActionResult Index()
{
    TechnicianDBO db = new TechnicianDBO();
    List<Technician> technicians = db.technicians.ToList();
    return View(technicians);
}

[HttpPost]
public ActionResult Index(int Postcode)
{
    TechnicianDBO db = new TechnicianDBO();
    List<Technician> technicians = db.Jobtechnicians(Postcode).ToList();
    return View(technicians);
}

Db类

public IEnumerable<Technician> Jobtechnicians(int postcode)
{
    string connectionString = ConfigurationManager.ConnectionStrings["testConnect"].ConnectionString;
    List<Technician> Jobtechnicians = new List<Technician>();
    using (SqlConnection con = new SqlConnection(connectionString))
    {
        SqlCommand cmd = new SqlCommand("spGetTechnicianByPostcode", con);
        con.Open();
        SqlParameter paramId = new SqlParameter();
        paramId.ParameterName = "@postcode";
        paramId.Value = postcode;
        cmd.Parameters.Add(paramId);
        SqlDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            Technician technician = new Technician();
            technician.Id = Convert.ToInt32(dr["techId"]);
            // technician.Username = dr["techUsername"].ToString();
            technician.Firstname = dr["techFirstname"].ToString();
            technician.Lastname = dr["techLastname"].ToString();
            technician.LandlineNo = dr["landlineNo"].ToString();
            technician.MobileNo = dr["mobileNo"].ToString();
            technician.Address1 = dr["address1"].ToString();
            technician.Address2 = dr["address2"].ToString();
            technician.Postcode = Convert.ToInt32(dr["postcode"]);
            technician.Email = dr["email"].ToString();
            technician.Fax = dr["fax"].ToString();
            technician.Profession = Convert.ToInt32(dr["ProfessionId"]);
            Jobtechnicians.Add(technician);
        }

        return Jobtechnicians;
    }
}

1 个答案:

答案 0 :(得分:0)

您需要提供CommandType

SqlCommand cmd = new SqlCommand("spGetTechnicianByPostcode", con);
cmd.CommandType = CommandType.StoredProcedure;

并且当您调用.ToString()时,如果该列在表中允许为空,则最好检查该列是否为null