2015-09-07 118 views
0

我目前正在进行第一年实习的“活动报告”应用程序,其中员工可以选择一个特定的项目并指定他们每天工作的小时数。试图了解如何提交表格

项目的选择(取决于员工ID)和页面的显示似乎正在工作。但这是我的问题:一旦我点击应该提交表单的显示图像 - 它似乎重新加载页面,就好像什么也没有发生!

提交的景观线如下:

<% using (Html.BeginForm("ActivityInputCreate", "Project")) 
     { %> 
[...] 

<td> 
    <input type="image" style="border: 0; width: 16px;" src="../../Content/Black_16x16/Save.png" onclick="this.form.submit" alt="save" /> 
    <input type="image" style="border: 0; width: 16px;" src="../../Content/Black_16x16/Cancel.png" onclick=" window.location.href = '/Project/ActivityInputIndex'; return false;" alt="cancel" /></td> 
     <!-- the first line being to save and the second to cancel --> 
<td> 
} 

我不知道如何处理表单提交,但这里的控制器(同名作为非[HttpPost]一个第一:

[HttpPost] 
     public ActionResult ActivityInputCreate(Project objToCreate, FormCollection form) 
     { 
      string year = form["Years"]; 
      int iyear = int.Parse(year); 
      string month = form["Months"]; 
      int imonth = int.Parse(month); 
      string strUser = Environment.UserName.ToLower(); 

      CalendarController c = new CalendarController(); 
      ViewBag.ListYears = c.ListYears(iyear); 
      ViewBag.ListMonths = c.ListMonths(imonth); 
      ViewBag.ListDaysOfMonth = _service.ListDaysOfMonth(iyear.ToString(), imonth.ToString()); 

      //nea11 
      Session["ActivityInputYear"] = iyear.ToString(); 
      Session["ActivityInputMonth"] = imonth.ToString(); 

      ProjectResourceManagerService pr = new ProjectResourceManagerService(new ModelStateWrapper(this.ModelState)); 
      ViewBag.ProjectList = pr.ListProject(); 

      List<IEnumerable<SelectListItem>> ddlists = new List<IEnumerable<SelectListItem>>(); 

      foreach (string s in ViewBag.ListDaysOfMonth) 
       ddlists.Add(_service.ListHours(0)); //id de UserActivity à la place de 0 

      ViewBag.ddlists = ddlists; 

      //nea12 
      string strProject = form["Project"]; 

      //nea13 
      string strSep = ";"; 
      string strDatas = ""; 
      int l = 0; 
      foreach (var jour in ViewBag.ListDaysOfMonth) 
      { 
       string nom = "Hours" + l.ToString(); 
       strDatas += form[nom] + strSep; 
       l++; 
      } 

      //ajout dans la base 
      UserActivityDb db = new UserActivityDb(@"metadata=res://*/Models.CRA.csdl|res://*/Models.CRA.ssdl|res://*/Models.CRA.msl;provider=Microsoft OLE DB Provider for SQL server;provider connection string=&quot;data source=(local)\SQLEXPRESS;initial catalog=CRAV34;persist security info=True;user id=sa;password=as0;multipleactiveresultsets=True;App=EntityFramework&quot;"); 
      if (null != strProject) 
       db.setFormattedData(iyear, imonth, ViewBag.ListDaysOfMonth, int.Parse(strProject), strUser, strDatas, true); 

      IEnumerable<Project> lp = _service.List(strUser, iyear.ToString(), imonth.ToString()); 
      lp = lp.Where(p => (true == db.ExistUserActivity(iyear, imonth, ViewBag.ListDaysOfMonth, p.ProjectId, strUser))); 


      //nea35 
      List<string[]> lstInts = new List<string[]>(); 

      foreach (Project p in lp) 
      { 
       string strInts = db.getFormattedData(iyear, imonth, ViewBag.ListDaysOfMonth, p.ProjectId, strUser, null, 0); 
       string[] ints = strInts.Split(';'); 

       lstInts.Add(ints); 

      } 
      ViewBag.ProjectInts = lstInts; 

      return View("ActivityInputIndex", lp); 
     } 

我很乐意给你更多的精度,但请记住,大部分代码是不是我的,是最后的实习生

TL; DR:PA的显示ge很好,我想在DropDownList被填充后提交,提交按钮不会做任何事情。

谢谢。

+0

从第一个删除'onclick =“this.form.submit”'。一个'>'是一个提交按钮(无论如何它将需要'.submit()') –

+0

我删除它,它似乎没有改变任何东西,我必须添加另一个提交的方式还是我不理解的东西? – Christopher

+0

只是最初尝试用''(注释掉其他2)如果这不起作用,那么你的代码还有其他问题 –

回答

0

原来输入我的用户名(通过SQL INSERT)出现问题。

string strUser = User.Identity.Name; 

一起使用:

command.Parameters.Add("@Login", SqlDbType.VarChar, 50).Value = sLogin; 

而且工作得很好。问题不在于发送表单(它确实接收),而在于SQL请求的构建方式。