Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ActionLink中的一个参数没有';t传递给控制器_Javascript_C#_Asp.net Mvc - Fatal编程技术网

Javascript ActionLink中的一个参数没有';t传递给控制器

Javascript ActionLink中的一个参数没有';t传递给控制器,javascript,c#,asp.net-mvc,Javascript,C#,Asp.net Mvc,我和MVC5一起工作 其中一个参数(nrAccount)传递给控制器 另一个参数(manualDate)没有 我做错了什么 看法 文档的更新 公共作废更新(日期时间?手动日期,字符串帐户) { var toUpdate=GetByAccount(nrAccount); toUpdate.DATE_MANUAL=手动日期; _SaveChanges(); } 公共IEnumerable GetAll() { 返回_context.CustomersTable; } 公共CustomerTabl

我和MVC5一起工作

  • 其中一个参数(
    nrAccount
    )传递给控制器
  • 另一个参数(
    manualDate
    )没有
我做错了什么

看法
文档的
更新
公共作废更新(日期时间?手动日期,字符串帐户)
{
var toUpdate=GetByAccount(nrAccount);
toUpdate.DATE_MANUAL=手动日期;
_SaveChanges();
}
公共IEnumerable GetAll()
{
返回_context.CustomersTable;
}
公共CustomerTable GetByAccount(字符串nrAccount)
{
返回GetAll().FirstOrDefault(k=>k.FOPKTO\u ACCOUNT\u==nrcount);
}
没有出现错误,只是数据库中没有保存任何内容。调试代码时,我看不到传递给变量
manualDate
的日期,不知道为什么。但是
nrcount
传递正确

用户可以选择日期选择器:


问题在于,当您应该使用POST时,您正在使用GET请求。GET包含帐户,但不包含日期文本框中的日期,因为它只包含初始值,而不包含用户将其更改为的值。因此,要修复此问题,您应该通过进行以下更改来更改您的GET to a post

请更正您的表单操作,它也有一个括号,即
@Url.action(“更新”、“主页”)
,而不是
@Url.action(“更新”、“主页”)

HttpPost
属性添加到控制器中的
Update
方法

如评论中所述,将您的@Action.Link替换为GET,并使用submit按钮生成帖子

这样,您就可以获得帐号,并为此添加一个隐藏字段

最后,由于textboxfor的工作方式,您需要更改更新方法以接收具有
帐户
付款日期
属性的对象

这里有一些与您的非常相似的演示代码,向您展示我的意思

视图模型

    public class HomeViewModel
    {
        public string Account { get; set; }
        public DateTime? PaymentDate { get; set; }
    }
控制器

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            var item = new HomeViewModel
            {
                Account = "theAccountNumber",
                PaymentDate = null
            };

            var viewModel = new List<HomeViewModel>()
            {
                item
            };

            return View(viewModel);
        }       

        [HttpPost]
        public ActionResult Update(HomeViewModel item)
        {
            //call your _docs method here  
            return RedirectToAction("Index");
        }
    }
公共类HomeController:控制器
{
公共行动结果索引()
{
var item=新的HomeViewModel
{
Account=“theAccountNumber”,
PaymentDate=null
};
var viewModel=新列表()
{
项目
};
返回视图(viewModel);
}       
[HttpPost]
公共操作结果更新(HomeViewModel项目)
{
//在这里调用您的_docs方法
返回操作(“索引”);
}
}
视图(注意帐户的隐藏字段)

@型号列表
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.Account)
@Html.HiddenFor(modelItem=>item.Account)
@Html.TextBoxFor(modelItem=>item.PaymentDate,新的{@type=“date”,@class=“form control datepicker”})
}

按照我的示例,当单击“保存”时,表单中的所有数据都将发布到服务器,并根据需要使用默认模型绑定放入模型。

您是否可以检查更改
@Html.ActionLink(“保存”、“更新”、“主页”、新建{nrcount=item.Account,manualDate=item.PaymentDate},null)
使用
?如果您将日期时间更改为不可为空,是否有效?@noobprogrammer好的,但我如何添加路由参数以提交?@Ben我想我不能。我返回到我的模型(然后传递给视图)一些日期列,这些列在数据库中为空,所以我需要使它们在模型中为空。它仍然不起作用。我需要将值从文本框传递到控制器。ManualDate列中db中几乎所有的值都是null,这就是为什么这里返回null并将该null传递给控制器。问题是我怎样才能把这个文本框中的值(用户选择的日期)传递给控制器,我怎样才能做到呢?我用BeginForm试试这个。不幸的是,仍然出现了一些错误,返回了空值。我会和公司的开发人员谈谈。无论如何,谢谢你的帮助!
    public class HomeViewModel
    {
        public string Account { get; set; }
        public DateTime? PaymentDate { get; set; }
    }
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            var item = new HomeViewModel
            {
                Account = "theAccountNumber",
                PaymentDate = null
            };

            var viewModel = new List<HomeViewModel>()
            {
                item
            };

            return View(viewModel);
        }       

        [HttpPost]
        public ActionResult Update(HomeViewModel item)
        {
            //call your _docs method here  
            return RedirectToAction("Index");
        }
    }
@model List<AccountDate.Controllers.HomeViewModel>

<table>
    @foreach (var item in Model)
    {
        <form action="@Url.Action("Update", "Home")" method="post">
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.Account)
                    @Html.HiddenFor(modelItem => item.Account)      

                </td>
                <td class="choice">
                    @Html.TextBoxFor(modelItem => item.PaymentDate, new { @type = "date", @class = "form-control datepicker" })
                </td>
                <td>
                    <input type="submit" value="Save" />                     
                </td>
            </tr>
        </form>
    }
</table>