2015-09-16 2 views
0

В моем старом приложении я использовал Default.aspx как страницу макета для моего ui-router. в нижней части страницы была:как переключиться с aspx на cshtml

<form runat="server" style="visibility: collapse"> 
    <asp:HiddenField ID="mkt" runat="server" /> 
    <asp:HiddenField ID="id" runat="server" /> 
</form> 

в моей угловой службе я иду значение с

var market = (angular.element('#mkt').val() == '' ? this.marketAbbreviation : angular.element('#mkt').val()); 
var id = (angular.element('#id').val() == '' ? this.sessionGuid : angular.element('#id').val()); 

как строковые значения передаются из приложения карты на модальном запуске. Я сделал поиск, и кажется, что это обычная проблема. Это то, что я пытаюсь работать.

Index.cshtml

@model SubjectProperty.Web.Controllers.MKT 

@Html.HiddenFor(x => x.mkt, new { htmlAttributes = new { @id = "mkt" } }) 
@Html.HiddenFor(x => x.id, new { htmlAttributes = new { @id = "id" } }) 

В моем родном контроллере

public class MKT 
{ 
    public string mkt { get; set; } 
    public string id { get; set; } 
} 

public class HomeController : Controller 
{ 
    public ActionResult Index(MKT m) 
    { 
     if (m == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 

     var model = new MKT(); 

     model.id = m.id; 
     model.mkt = m.mkt; 

     return View(model); 
    } 
    } 

теперь, когда я вручную вставить

локальный: 1323/МКТ = влажный & Id = dd23e460-e319 -47c9-b9c4-rr5r6798e56t

он берет его и работает. Что мне нужно делать здесь?

Обновление, понятное, что бритва hiddenFor не получает значения от контроллера. вот скриншот. pic

+0

как ты вызывать действие? –

+0

на начальном запуске приложения. Я использую приложение asp.net mvc по умолчанию. – texas697

+0

В чем проблема, которую вы пытаетесь решить здесь? Есть ли сообщение об ошибке с конкретным URL-адресом? – jcwilbur

ответ

1

Попробуйте оборачивать ваши скрытые поля формы внутри формы:

using(Html.BeginForm() 
{ 
    @Html.HiddenFor(x => x.mkt, new { htmlAttributes = new { @id = "mkt" } }) 
    @Html.HiddenFor(x => x.id, new { htmlAttributes = new { @id = "id" } }) 
} 

А также отметить свой метод с атрибутом [HttpPost]:

[HttpPost] 
public ActionResult Index(MKT model) 
{ 
} 

Если вы хотите использовать более продвинутый сценарий , рассмотрите пользовательские привязки моделей.

+0

Атрибут Post вызывает его не загружать ничего. обертывание его в форме делает то же самое, что и без него. – texas697

1

Оберните HiddenFor внутри какой-то форме (HTML, Ajax ...) и в подписи вашего метода контроллера получить коллекцию форм элементов, как: public ActionResult Index(FormCollection _collection)

И префикс метод с [AcceptVerbs(HttpVerbs.Post)]

+0

вы можете показать немного больше о том, что делать в действии с помощью FormCollection – texas697

+0

@ texas697, после чего вы используете идентификатор элемента формы (из представления) для доступа к коллекции: DateTime.TryParse (_collection ["txtTxTime"], out newTime); или if (_collection ["txtTag"]. IndexOf ("") <0) –

Смежные вопросы