2013-05-04 4 views
1

Это мой код, где я хочу опубликовать некоторые данные (дата календаря здесь), чтобы «проиндексировать» действие «домашнего» контроллера и хочу сохранить эти данные в базе данных и в то же время я хочу, чтобы перенаправить на другое действие другого контроллера т.е. «Index» действия «Home» контроллераПеренаправление из ane action в другое действие контроллера в mvc

вот мой JQuery код ниже,

function getDate() { 

      $('.cal_daybox').on('click', function() { 

      var timestamp = parseInt($(this).attr('id')); 

       var day = new Date(timestamp); 

       alert("You clicked " + day.toDateString()); 

       var url = '@Url.Content("~/Home/Index")'; 
       var date = day.toDateString(); 
       $.ajax({ 
        type: "POST", 
        url: url, 
        data: { date: day.toDateString() }, 
        dataType:"json" 
       });     
      return false; 
      }); 

EventsController.cs

public ActionResult Index() 
    { 
     return View(db.Events.ToList()); 
    } 

HomeController.cs

[HttpPost] 
    public ActionResult Index(DateTime date) 
    { 

      Date dt = new Date(); 
      dt.StartDate = date; 
      db.Dates.Add(dt); 
      db.SaveChanges(); 
      return RedirectToAction("Index", "Events", new { id = dt.DateID }); 
    } 
+0

да его не работает –

+0

индекс действия событий :: общественный ActionResult Index() { возвратных View (db.Events.ToList()); } –

+0

Проблема заключается в том, что я не могу отправлять данные и перенаправлять на другую страницу одновременно, потому что в отладчике он показывает перенаправление, но в действительности он не перенаправляется. –

ответ

0

Ваш индекс Действие событий Контроллер не имеет параметра для делат Dateid value.It не может найти действие, что может ПОЛУЧИТЕ DateId Вал.

Вы должны либо изменить существующие действия или добавить перегрузки действий, как этого

public ActionResult Index(DateTime dateId) 
{ 
    //Do something with the val 
} 

public ActionResult Index() 
{ 
    return View(db.Events.ToList()); 
} 
0
you are calling controller action using ajax so in this case you have to change you action method and jquery call like this: 




     [HttpPost] 
     public ActionResult Index(DateTime date) 
     { 

      Date dt = new Date(); 
      dt.StartDate = date; 
      db.Dates.Add(dt); 
      db.SaveChanges(); 
      return Json(dt.DateID,JsonAllowBehaviour.AllowGet); 
      // return RedirectToAction("Index", "Events", new { id = dt.DateID }); 
     } 
    function getDate() { 

      $('.cal_daybox').on('click', function() { 

      var timestamp = parseInt($(this).attr('id')); 

       var day = new Date(timestamp); 

       alert("You clicked " + day.toDateString()); 

       var url = '@Url.Content("~/Home/Index")'; 
       var date = day.toDateString(); 
       $.ajax({ 
        type: "POST", 
        url: url, 
        data: { date: day.toDateString() }, 
        dataType:"json", 
        onsuccess:function(id) 
           { 
window.location='/Events/Index?Id='+id; 
            } 
       });     
      return false; 
      }); 


And also please change your index action of Events Controller like below: 
public ActionResult Index(int Id=0) 
{ 
    return View(db.Events.ToList()); 
} 
Смежные вопросы