Razor:如何动态地为只读TextBox字段赋值?

时间:2016-10-12 05:14:03

标签: c# asp.net-mvc razor

我有一个read-only文本框,应该动态初始化为一个值。此字段显示在页面上,该页面用于输入与上一页中创建的播放器相对应的详细信息的值(我为此目的使用RedirectToAction(),但无法访问传递的" PlayerID"来自当前页面控制器的值。因此决定使用TempData。)。由于PlayerID每次添加新玩家时都会更改,因此该字段应显示该值,同时仍保持只读状态。 此外,这是一个required'字段,因此在设置值之前无法提交表单。

 @Html.TextBoxFor(model => model.PlayerID, htmlAttributes: new { @readonly = "read-only", @class = "control-label col-md-2", value = @Html.Raw(TempData["PlayerID"]) })

如何设置此字段的值,因为它在TempData["PlayerID"]

2 个答案:

答案 0 :(得分:0)

您可以拥有在页面加载上运行的JavaScript,例如:

@section Scripts
{
 <script>
   $(function(){
    $("#PlayerID").val('@TempData["PlayerID"]');
   });
 </script>
}

或者,你可以为动作中的视图初始化Model,所以如果你的动作名称是'PlayerDetails',那么你应该有这样的东西:

public ActionResult PlayerDetails()
{
  return View(new Player{PlayerID=TempData["PlayerID"]}
}

这样,当视图绑定到视图模型时,它将被初始化为传递的值。

答案 1 :(得分:0)

您可以尝试以下代码:

  @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view=convertView;
        final CategorisedApplicationsAdapter.ViewHolder viewHolder;
        if(view==null){
            view=layoutInflater.inflate(R.layout.categorised_apps_row,parent,false);
            viewHolder= new CategorisedApplicationsAdapter.ViewHolder();
            viewHolder.tvApplicationName= (TextView) view.findViewById(R.id.textView_Categorised_Apps_row);
            viewHolder.imageAppIcon= (ImageView) view.findViewById(R.id.imageView_Categorised_Apps_row);
            view.setTag(viewHolder);
        }else {
            viewHolder= (CategorisedApplicationsAdapter.ViewHolder) view.getTag();
        }


        String pName=packageNames.get(position);
        viewHolder.tvApplicationName.setText(getApplicationName(packageManager,pName));
        viewHolder.imageAppIcon.setImageDrawable( getApplicationIcon(packageManager,pName));
        viewHolder.packageName=pName;
        // view.setTag(categoryList.get(position).toString());

        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
   ViewHolder viewholder=(ViewHolder)v.getTag();
                Intent launchIntent = packageManager.getLaunchIntentForPackage(viewholder.packageName);
                if (launchIntent != null) {
                  mContext.startActivity(launchIntent);//null pointer check in case package name was not found
                }

            }
        });

        return view;
    }

或者在你的情况下:

@Html.TextBox("PlayerID", @TempData["PlayerID"] ,new { @readonly = "read-only", @class = "control-label col-md-2"})