2014-10-02 2 views
0

У меня есть форма создания в ASP.Net MVC5. Когда страница загружается, некоторые данные должны извлекаться из БД и на кнопку отправить клик, необходимо создать диспетчер создания, чтобы сохранить данные. Проблема заключается в том, что когда страница загружается, она всегда идет на метод HTTP POST, а не метод get. (Я знаю, что несколько таких вопросов уже подняты, но мне ничего не помогает). Если я переименую имя метода HTTP POST, он вызывает метод get правильно. Имея два действия с одинаковым именем, он всегда вызывает метод HTTP POST во время загрузки страницы, а нажатие кнопки не вызывает никакого действия.Как вызвать httpget вместо сообщения для pageload в MVC5

Это приложение с высоким доверительным отношением Sharepoint для ASP.Net MVC, поэтому мой URL будет отличаться при просмотре.

Мой вид и контроллеры выглядят следующим образом. Здесь что-то не так?

@using (Html.BeginForm("Create", "Test"))  
{  

    <div class="form-horizontal"> 
       <div class="form-group"> 
        @Html.LabelFor(model => model.Title, new { @class = "control-label col-md-2" }) 
        <div class="col-md-10"> 
         @Html.EditorFor(model => model.Title) 
         @Html.ValidationMessageFor(model => model.Title) 
        </div> 
       </div> 
      <div class="form-group"> 
       <div class="col-md-offset-2 col-md-10"> 
        <input type="submit" value="Create" class="btn btn-default" /> 
       </div> 
      </div>  
    </div> 
} 

public ActionResult Create()  
{ 
    MyModel model = new MyModel(); 
    string usersid = ((System.Security.Principal.WindowsIdentity)(HttpContext.User.Identity)).User.Value; 

      //Bind Board details 
      eDataAccess mda = new eDataAccess(); 
      ExtDataTable committees = mda.GetList(usersid, "--url--"); 

      GetAllUserList(model.comitteeslist.FirstOrDefault().Value, usersid); 

      // few logic 

      return View(model); 
} 

    [HttpPost]  
    public ActionResult Create(MyModel model)  
    { 
string usersid = ((System.Security.Principal.WindowsIdentity)(HttpContext.User.Identity)).User.Value; 
    // few logic 
       int id = Utilities.Create(model.Title, usersid, 2057, 6297, 
        model.desc, false, model.start, model.end); 

     return View(); 
    } 
+0

Выполняется ли это каждый раз при каждой загрузке страницы даже при первой загрузке страницы или происходит это только после того, как вы отправили данные в первый раз? (Пожалуйста, возьмите 'FormMethod.Get', мой ответ был неправильным). –

+0

Это небольшой проект и имеет только один вид на данный момент. Это происходит каждый раз для загрузки страницы. – Ramee

+1

Первая подпись метода «ActionResult» не принимает никаких параметров. Таким образом, это будет тот, который будет вызван, когда ваша страница будет загружена. Второй, принимает «Модель» и будет вызван, когда вы отправите свою форму. Вы пытались добавить атрибут '[HttpGet]' к первому? Я честно не понимаю, что вы пытаетесь сделать здесь. Может быть, вы не разъясняете свое объяснение. – melancia

ответ

1

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

У меня все еще нет ответа, почему он ведет себя таким образом. Однако это решение помогает и отлично работает.

public ActionResult Index() 
{ 
    return RedirectToAction("Create"); 
} 

public ActionResult Create()  
{ 
    MyModel model = new MyModel(); 
    string usersid = ((System.Security.Principal.WindowsIdentity)(HttpContext.User.Identity)).User.Value; 

    //Bind Board details 
    eDataAccess mda = new eDataAccess(); 
    ExtDataTable committees = mda.GetList(usersid, "--url--"); 
    GetAllUserList(model.comitteeslist.FirstOrDefault().Value, usersid); 
    // few logic 
    return View(model); 
} 

[HttpPost]  
public ActionResult Create(MyModel model)  
{ 
    string usersid = ((System.Security.Principal.WindowsIdentity)(HttpContext.User.Identity)).User.Value; 
// few logic 
int id = Utilities.Create(model.Title, usersid, 2057, 6297, 
       model.desc, false, model.start, model.end); 
return View(); 
} 
Смежные вопросы