为什么当我的动作返回一个视图时 - 它首先通过一个javascript函数

时间:2014-01-31 20:33:56

标签: javascript asp.net-mvc

Index视图中,我只有一个带有javascript函数的按钮,用于点击它时:

<script>
    function AddCat() {
        $.ajax({
            type: "GET",
            url: '@Url.Action("AddCategory")',
            data: {},
        });
    }
</script>

@Html.DropDownList("Languages", new SelectList(Model.lstLanguages, "LanguageID", "Name", Session["langID"] ?? "1"), new { id = "ddlLanguages" })
<div id="categoriesPlace"></div>
<input type="button" id="btnAddCategory" onclick="AddCat()" value="AddCategory" />

当我点击按钮时,如您所见,我应该被重定向到AddCategory操作,该操作会在数据库中添加记录并返回AddCategory视图。问题是,当它到达AddCategory视图中的下拉列表时,它会直接转到Addbtn_CLick()函数,就像它被点击一样,然后它会将我重定向到Index操作。你能解释一下这种行为吗?

所以,这是我的CategoryController

public class CategoryController : Controller
{
    public ActionResult AddCategory()
    {
        CategoryViewModel vm = new CategoryViewModel();
        vm.AddNewCategory();
        return View(vm);
    }

    public ActionResult AddCategoriesLanguages(int catID, int lanID, string title, string shrtDescription, string description)
    {
        CategoryViewModel vm = new CategoryViewModel();
        vm.AddCategoriesLanguages(catID, lanID, title, shrtDescription, description);
        return RedirectToAction("Index");

    }
}

而且,这是我的AddCategory视图:

@model Onion.Web.ViewModels.CategoryViewModel

@{
    ViewBag.Title = "AddCategory";
}


<h2>AddCategory</h2>
@Html.DropDownList("Languages", new SelectList(Model.lstLanguages, "LanguageID", "Name",@HttpContext.Current.Session["langID"]),new { id = "ddlLanguages" })
<br />
<label for="txbTitle">Title:</label>
<input type="text"  id="txbTitle"/>
 <br />
<label for="txbShortDescription">Short Description:</label>
<input type="text"  id="txbShortDescription" />
 <br />
 <br />
<input type="button" id="btnAdd" onclick="btnAdd_Click" value="Add" />

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>


<script>
    function btnAdd_Click() {    
        $.ajax({
            type: "GET",
            url: '@Url.Action("AddCategoriesLanguages")' + '?catID=' +@Model.newCategoryID +'&lanID=' + $("#ddlLanguages").val() + '&title=' + $('#txbTitle').val() + '&shrtDescription=' + $('#txbShortDescription').val() + '&Description=' + $('#txbDescription').val(),
            data: {}
        });
    }
</script>

1 个答案:

答案 0 :(得分:0)

在AddCategory视图中,尝试更改按钮的onclick属性以包含函数名称和括号,如下所示:

<input type="button" id="btnAdd" onclick="btnAdd_Click()" value="Add" />

我不是百分百确定这是否是问题,但它对我来说很突出。