0

一直在为此苦苦挣扎。尝试了我能想到的一切。我使用 javascript 将数据传递给 db,在另一个页面上使用 ints 可以正常工作,但现在使用字符串它不会工作:s

 @using (Html.BeginForm(null, null, FormMethod.Post, new{@id="manageForm"}))
    {
    @Html.AntiForgeryToken()

    <span class="actions">

     @T(User.Id.ToString()) @T("  ") @T(ViewData["Tag"].ToString())

<input type="hidden" name="tag" value="fr" />
    <input type="hidden" name="id" value="3" />
<a href="#"class="bttn green large"  onclick="return following.();">@T("Follow")</a>


</span>
}

Javascript

<script type="text/javascript">
    function followTag() {
        $('#manageForm').attr('action', '@(Url.Action("FollowTag"))').submit();
        return false;
    }
    </script>

控制器

[RequireAuthorization]
        [HttpPost]
        public ActionResult FollowTag(int id, string tag)
        {
            _service.FollowTag(id, tag);
            return RedirectToAction("TagPage","Detail", new
            {
            });
        }

数据访问

   public void FollowTag(int id, string tag)
    {
        DbCommand comm = GetCommand("SPTagFollow");
        //user id
        comm.AddParameter<int>(this.Factory, "id", id);
        //id to follow
        comm.AddParameter<string>(this.Factory, "tag", tag);

        comm.SafeExecuteNonQuery();
    }

路线设置良好,sql(存储过程)执行完美。希望你们中的一个人能看到一些明显的东西

干杯

4

1 回答 1

0

我认为是输入错误的问题,检查你的最后一个<a>标签,你输入following.()onclick事件,看到你的 javascript 函数被调用了followTag

如果这不能解决问题,那么摆脱该foolowTag功能,您可以在表单本身中指定操作和控制器,如下所示:

@using (Html.BeginForm("FollowTag", "YourControllerName", FormMethod.Post)) {
    ...
    //Delete this line
    //<a href="#"class="bttn green large"  onclick="return following.();">@T("Follow")</a>
    //This submit button will do the job
    <input type='submit' value='@T("Follow")' />
}

那应该这样做。如果您使用锚标记只是为了样式,那没关系,否则您应该使用其他方式,我认为更清晰,而且它利用了剃须刀的强大功能。

于 2013-03-11T05:04:48.313 回答